android scrollto参数,【原创】scrollBy和scrollTo简述
刚刚在学习listview滑动删除,要用到view的scrollBy和scrollTo,就研究了一下,下面分享一下:先说scrollTo,scrollTo(int x, int y):传入x,y坐标,将view移动到(-x,-y)位置scrollBy(int x, int y):传入x,y坐标,将view向x正方向移动-x个单位,向y正方向移动-y个单位假设x为正数,就向左移,反之向右下面画个图举
刚刚在学习listview滑动删除,要用到view的scrollBy和scrollTo,就研究了一下,下面分享一下:
先说scrollTo,
scrollTo(int x, int y):传入x,y坐标,将view移动到(-x,-y)位置
scrollBy(int x, int y):传入x,y坐标,将view向x正方向移动-x个单位,向y正方向移动-y个单位
假设x为正数,就向左移,反之向右
下面画个图举个例子:
红线框代表手机界面,黑框代表一个LinearLayout,id设为llayout;
下面调用:
llayout.scrollTo(-100,0);
效果:
这个时候再调用llayout.scrollTo(-100,0);图像是不会发生变化的,因为这个方法的作用是移动到固定的点
那么,这个时候再调用:llayout.scrollBy(-100,0);
图像就会变成这样:
即向右移动了100px,
这个时候假设再调用llayout.scrollTo(0,0);他又会回到初始位置了
看scrollBy的方法可以看出:
scrollBy也是调用了scrollTo的方法,而参数是当前的Scroll坐标加上传入的坐标,即从当前位置移动(x,y)
public void scrollBy(int x, int y) {
scrollTo(mScrollX + x, mScrollY + y);
}
可能有的同学会问,为什么参数是负的,走的确是正的方向,这个问题在view的某一句源码可以得到解释:
public void invalidate(int l, int t, int r, int b) {
final int scrollX = mScrollX;
final int scrollY = mScrollY;
invalidateInternal(l - scrollX, t - scrollY, r - scrollX, b - scrollY, true, false);
}
负负得正,这样容易理解多了吧,至于为什么要减,各位可以自己去探索
使用通俗话总结下这两个方法:
假如两个人在跑步,scrollTo(-50,0)即移动到第50米,scrollBy(-50,0)即移动50米,当两人位于起点时,两方法等效
转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/17193.html
微信打赏
支付宝打赏
感谢您对作者kyle的打赏,我们会更加努力! 如果您想成为作者,请点我
更多推荐
所有评论(0)