scrollTo、scrollBy、getScrollX、getScrollY这4个方法的含义

来源:互联网 发布:java float double 编辑:程序博客网 时间:2024/04/30 02:10


推荐一款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、最后,大家自己试试理解一下吧。


原创粉丝点击