概述
Scroller类封装了滚动,我们可以使用Scroller 类来收集滑动动画过程中的数据,例如为了响应快速滚动动画。当View的位置发生变化的时候,Scroller会自动追踪scrollX 和scrollY的变化。为了达到弹性动画的效果,我们必须自己获取和处理坐标数据。
主要用到的函数
- startScroll()
- computeScrollOffset()
- getCurrX(),getCurrY()
- View.computeScroll()
- scrollTo()
startScroll()
函数签名如下:
public void startScroll(int startX, int startY, int dx, int dy, int duration) {
mMode = SCROLL_MODE;
mFinished = false;
mDuration = duration;
mStartTime = AnimationUtils.currentAnimationTimeMillis();
mStartX = startX;
mStartY = startY;
mFinalX = startX + dx;
mFinalY = startY + dy;
mDeltaX = dx;
mDeltaY = dy;
mDurationReciprocal = 1.0f / (float) mDuration;
}
这个函数通过提供滑动起始点和滑动距离来开始滑动,默认的滑动时间为250毫秒.
startX和startY表示滑动的起点
dx和dy 表示要滑动的距离
duration表示整个滑动完成所需要的时间
我们可以看到startScroll这个函数内部并没有做滑动相关的事件处理,只是对一些变量进行赋值。
computeScrollOffset()
函数签名
public boolean computeScrollOffset() {
if (mFinished) {
return false;
}