推荐一款app应用——"印度爱经",木蚂蚁下载点击打开链接
源码下载地址
结合程序和图作出说明:
1、关于自定义视图继承ViewGroup中的onMeasure和onLayout是怎么实现我就不多说了,此博文主要是说明scrollTo、scrollBy、getScrollX、getScrollY这4个方法的含义。
2、整个坐标系是以手机屏幕左上角为原点,子视图的高度应该和手机屏幕高度一样高,但是为了画图显示突出,所以手机屏幕稍微高了一些。
3、MultiViewGroup继承ViewGroup,初始化时包含了3个子视图(子视图1、子视图2、子视图3),并且每个子视图的宽、高都和手机屏幕一样大。MultiViewGroup容器经过onMeasure和onLayout设置后,它的视图坐标应该是3个颜色区域的总大小,这个区域远比我们得手机屏幕大,这点要注意。开始时应该显示的是子视图1(红色区域)。
4、public voidscrollTo(int x, int y)说明:
它表示移动到视图的那个坐标点。哪个视图调用这个方法,那么这个视图的(x,y)点就与手机屏幕的左上角对齐(也可以理解为,手机屏幕的左上角就移动到(x,y)坐标)。
public voidscrollBy(int dx, int dy) 说明:
它表示在视图的X、Y方向上各移动dx、dy距离
dx>0表示视图(View或ViewGroup)的内容从右向左滑动;反之,从左向右滑动
dy>0表示视图(View或ViewGroup)的内容从下向上滑动;反之,从上向下滑动
getScrollX()说明:
=手机屏幕显示区域左上角x坐标减去MultiViewGroup视图左上角x坐标=320
getScrollY()说明:
=手机屏幕显示区域左上角y坐标减去MultiViewGroup视图左上角y坐标=0(因为子视图的高度和手机屏幕高度一样)
5、当我们点击Next按钮时,执行:
mulTiViewGroup.scrollTo(curscreen* screenWidth, 0);那么程序就移动到了黄色区域
6、点击Prev按钮,执行
mulTiViewGroup.scrollBy(10,200);出现如下图所示
x=10,表示视图从右向左移动了10个单位
y=200,表示视图从下到上移动了200个单位
同时可以调试看看getScrollX()和getScrollY()的值是多少
5、最后,大家自己试试理解一下吧。