androidlauncher平滑和立体翻页效果

androidlauncher平滑和立体翻页效果

ID:37009792

大小:203.51 KB

页数:9页

时间:2019-05-11

androidlauncher平滑和立体翻页效果_第1页
androidlauncher平滑和立体翻页效果_第2页
androidlauncher平滑和立体翻页效果_第3页
androidlauncher平滑和立体翻页效果_第4页
androidlauncher平滑和立体翻页效果_第5页
资源描述:

《androidlauncher平滑和立体翻页效果》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Androidlauncher的平滑和立体翻页效果我们这里把Androidlauncher程序的Workspace相关的代码抽取出来,以一个比较简单的代码来展示launcher程序是如何实现多页以及不同页面之间的切换效果。本示例代码在SDK2.1中运行,设置的是WVGA的屏幕大小。首先我们来看一下程序运行的效果来一些感性的认识。图1:平滑移动效果 图2:立体翻页效果 窗口页面的布局接着我们来看一下程序UI(即View和ViewGroup)的布局,Activity的ContentView是layout中的mai

2、n.xml。它的内容如下:清单1. 其中FlatWorkspace的基类是Workspace,它继承自ViewGroup,是一个容器类,其中包含三个子View,子View是ImageView。三个ImageView就是三个页面。这三个ImageView的创建是在WorkspaceActivity的onCreate函数中调用Workspace的initScreens函数完成的,代码如下:清单2ViewGroup.LayoutParamsp=newiewGroup.LayoutParams(ViewGroup.L

3、ayoutParams.FILL_PARENT,ViewGroup.LayoutParams.FILL_PARENT);for(inti=0;i<3;i++){this.addView(newImageView(this.getContext()),i,p);}((ImageView)this.getChildAt(0)).setImageResource(R.drawable.image_search);((ImageView)this.getChildAt(1)).setImageResource(R.d

4、rawable.image_system);((ImageView)this.getChildAt(2)).setImageResource(R.drawable.image_top);图3:Workspace和页面布局图 为了让三个页面达到上图的窗口布局,我们对Workspace的onMeasure和onLayout函数进行了重载,重点在onLayout代码中。onLayout函数调用layoutScreens函数完成布局,FlatWorkspace中的layoutScreens实现如下:清单3protec

5、tedvoidlayoutScreens(){intchildLeft=0;finalintcount=getChildCount();for(inti=0;i

6、MeasuredHeight());childLeft+=childWidth;}}}上面child.layout部分的代码把三个页面分别布局到了X和Y坐标系中的((0,0)-(ScreenWidth,ScreenHeight))和((ScreenWidth,0)-(2*ScreenWidth,ScreenHeight))以及((2*ScreenWidth,0)-(3*ScreenWidth,ScreenHeight))三个矩形区域中,这里用矩形区域的左上角顶点坐标和右下角的顶点坐标来表示矩阵。至此我们已经完

7、成了整个窗口页面的布局,窗口页面的布局大小是实际可视屏幕宽度的三倍,所以要显示所有页面需要让页面滚动。页面的平滑移动的实现下面来看用户touchmove的时候程序如何让页面进行滑动,并且绘制他们。页面的滑动可以调用View的scrollBy或ScrollTo函数,在Workspace的onTouchEvent函数中取得用户的手指移动的距离,然后调用scrollBy(它的参数就是X和Y轴上需要移动的距离)来让Workspace这个View(也是ViewGroup)移动用户手指移动的距离,当然View移动之前得判

8、断一下用户手指移动的距离和速度是否足够才进行移动,以此减少用户的误操作。这部分代码简单就不进行深入分析了,请大家自己看看代码。当Workspace这个View调用scrollBy进行View的滚动时,必然导致这个View无效,从而被系统重新绘制,所以它的dispatchDraw函数会被调用来进行子View(ImageView)的绘制,它本身没有什么东西要绘制,所以就不用关心Workspace的onD

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。