创新源于模仿之三:实现左右两个屏幕的切换 – SHARE & TOP – 博客频道 – CSDN.NET

今天第三篇,模仿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描述:

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

版权声明:
作者:admin
链接:https://www.techfm.club/p/30812.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>