ScrollTo与ScollBy区别,及参数 x,y 解释

2019-02-01  本文已影响22人  正在写诗中

很多博客和书上对scrollTo(x,y)的方法解释为

“ scrollTo(int x,int y)表示滑动到终点位置(x,y)”或者是“scrollTo(int x,int y)表示滑动到一个具体的坐标点(x,y)”

这种解释容易造成误解 ,似乎解释为执行scrollTo方法后,view的最终位置是是在坐标(x,y)上。

scrollTo方法应该是表示

 相对view初始位置 横向移动了x,纵向移动了y的距离,而view的初始位置是不变的,所以不管调用多少次scrollTo()方法,view移动的都是同一个位置。

至于ScrollBy方法,其实内部就一句代码:

其实最终也是调用 scrollTo 方法。 只是每次是相对于 当前View 的位置 移动 x和y的距离。

至于,为什么调用 scrollBy(100,100) ,view不是按照我们的直觉向右下角移动,而是向左上角移动?

这是因为view移动时所使用的参考对象不同,view移动的参考对象是手机屏幕。

确切的说,本身View所在的画布是固定,不动的。而我们手机屏幕面积有限,只能看到画布的一小片区域,这是执行 scrollBy(100,100),是手机屏幕相对于画布向右下角移动了(100,100)的距离,但对于用户来说,是view控件向左上角移动了位置。

上一篇下一篇

猜你喜欢

热点阅读