launcher修改--页面标记实现原理(代码追踪)

大家看这篇文章的时候,可能已经看过在launcher 2.1上实现2.2的屏幕标记(http://gqdy365.iteye.com/blog/897636),使用一个imageView显示不同的图片,看一下android里面launcher2里面源代码的实现,在drawable文件夹里面,可以找到一个home_arrows_left.xml的文件,内容如下:

同时,在launcher.xml文件中,


引用了这个文件,但是他真正在代码中是如何实现的哪,在launcher.java中的setupViews()方法中,有一下代码:


通过代码获取这个两旁的图片,然后我们再看一看在workspace.java里面的setIndicator()方法,

让我们找到mCurrentScreen这个参数的定义(73行):

定义的一个整数,对应着home_arrows_left.xml里面的maxLevel,不同的参数ImageView上面显示不同的图片,用以标记页面。

在上面的launcher代码中,有android:onClick="previousScreen"注册了imageView的点击相应事件,在launcher.java中,对应的代码如下:

我们继续追踪,在workspace.java代码中的scrollLeft和 scrollRight()方法的代码:

先判断是否滑动到头,然后跳转到目标屏,snapToScreen()方法代码也在workspace中,代码如下:


这就是其实现的基本过程。




你可能感兴趣的:(Launcher)