scrollTo和scrollBy

来源:互联网 发布:淘宝助理回收电子单号 编辑:程序博客网 时间:2024/05/16 09:49

其实scrollTo和scrollBy很好区分。scrollTo是移动到某个具体的坐标,而scrollBy是在x轴和y轴上移动多少距离。关键是scrollTo究竟是移动了什么。

按我的理解,对一个布局调用scrollTo函数,并没有移动它的子视图,虽然它们看起来动了,但是子视图在布局中的相对位置是没有变的。其实它是移动了该布局的显示区域(当我们对布局调用scrollTo之后,该布局调用getScrollX()和getScrollY()返回的值和最开始相比是变化的,但是子视图的getLeft(),getTop()返回的值并没有变)。像我们搭地铁,地铁开动时我们看到窗外的广告牌移动了,但是其实它们并没有动,是我们的视线移动了。

可以把挂广告的墙比作一个布局,广告牌是布局上的子视图,窗口是我们看到的布局的显示区域,也可以理解为屏幕。当对墙调用scrollTo(50, 0)时,墙和广告牌都没动,但是窗口向右(正数为向右)移动了50米,所以我们在地铁上看到广告牌向左移动了50米。知道这个原理后,我们调用scrollTo()时设置参数就会清楚很多。如果我们要某个子视图看起来向右移,那么该布局的显示区域就要往左移动,x就要设为负数。scrollBy和Scroller对象的startScroll也类似。

0 0
原创粉丝点击