scrollTo和scrollBy

其实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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值