现在的位置: 首页 > 综合 > 正文

创新源于模仿之三:实现左右两个屏幕的切换

2013年08月05日 ⁄ 综合 ⁄ 共 3674字 ⁄ 字号 评论关闭

今天第三篇,模仿UCWEB的首页,做一个可以左右滑动的双屏。

 

 

其实要实现这个效果在Android中并非难事,因为官方的Launcher已经有现成的源代码放在那儿了,就是那个Workspace.java。大家可以去http://android.git.kernel.org/ 下载。

 

而我们要做的事情就是分析它并精简它(毕竟我们只是打算左右滑动罢了,并不需要能创建快捷方式文件夹之类的东西,更不需要在上面拖放图标)。

 

 

因此,不管是Drop还是Drag,统统不需要了:

 

同时,把那些个接口所要求实现的方法,以及那些与Drag/Drop相关的成员变量都去掉吧。
看看我精简后剩下什么成员变量:

 

以上足矣。

 

然后在Eclipse中会有大量的错误,没关系,删吧。

 

addView 是用来在代码中添加新的子view的方法,不需要,我们只需要在layout xml中直接指定就好了。
getOpenFolder/getOpenFolders 文件夹相关的,当然不需要了。
addInCurrentScreen/addWidget 都没什么用处了,可以删掉。
与Cell相关的那些也可以删掉。

 

因为我们的代码不能直接访问mScrollX,所以需要换成getScrollX()。这一点是需要特别注意的。

 

看看我精简后都剩下些什么方法:

 

 

最后只要不报错,就OK了。

 

我们来分析一下几个关键的方法,其一是 onTouchEvent:

 

其二 snapToDestination和snapToScreen:

 

其三 computeScroll,让Workspace滚动到合适的位置:

 

 

基本上就是这些了,其它方法都是辅助的,很好理解。

 

其实有一个问题,我们发现UCWeb主页下面有三个点指示当前所处的位置,这个指示器我的想法是可以放在Workspace外面来做,利用Workspace当前的mCurrentScreen值显示出当前正处于哪个屏。

 

给出我的layout xml描述:

 

就这样了。这个分页指示器就留给你自己去发挥了。

 

 

抱歉!评论已关闭.