Scoller,scrollTo(int x, int y),scrollBy(int x, int y)的区别

经常搞混这三个东西的却别,今天在这里备份一下。

首先,Scroller是一个类,而scrollTo(int x, int y)和scrollBy(int x, int y)是类View的两个方法。

scrollTo(int x, int y)和scrollBy(int x, int y)是用来实现View的偏移的(另外可以实现View的偏移的方法还有offsetTopAndBottom(int offset)和offsetLeftAndRight(int offset))。

scrollTo(int x, int y)和scrollBy(int x, int y)的区别在于scrollTo(int x, int y)是滑动到指定的位置,而scrollBy(int x, int y)是在原来的位置基础上再滑动对应的距离。

Scroller是一个类,它通过方法startScroll(int startX, int startY, int dx, int dy, int duration)来模拟在duration时间里,我要从startX移动dx的偏移量,从startY移动dy的偏移量。但它只是模拟偏移量的变化,不具体实现。在模拟的偏移量的不断变化过程中它会不断的回调computeScrollOffset()方法,我们可以重载computScrollOffset()方法,也不断获取模拟的当前的偏移量,并通过scrollTo(int x, int y)或者scrollBy(int x, int y)来真正实现View的偏移量。(感觉Scroller和ValueAnimator很相似,ValueAnimator也是模拟从一个值到另一个值的的过程,并通过AnimatorUpdateListener来实现具体的操作)

“我们知道想把一个View偏移至指定坐标(x,y)处,利用scrollTo(int x, int y)方法直接调用就OK了,但我们不能忽视的是,该方法本身来的的副作用:非常迅速的将View偏移到目标点,而没有对这个偏移过程有任何控制,对用户而言可能是不太友好的。于是,基于这种偏移控制,Scroller类被设计出来了,该类的主要作用是为偏移过程制定一定的控制流程,从而使偏移更流畅,更完美。” --qinjuning (这段话总结的太好了)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值