[安卓系统谁开发的]安卓开发之scrollBy和scrollTo简述

更新时间:2020-10-18    来源:安卓教程    手机版     字体:

【www.bbyears.com--安卓教程】

刚刚在学习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米,当两人位于起点时,两方法等效

本文来源:http://www.bbyears.com/shoujikaifa/105327.html

热门标签

更多>>

本类排行