解决什么问题?出现的使命是?
View.scrollTo及scrollBy方法是促使View内容的滑动,但其结果是瞬间达到目标位置,很生硬。
Scroller就是提供一个策略来让这种生硬的移动变的平滑和自然。
解决的过程是?
基本思想
将需要平移的距离切分成小段小段的,在给定时间内逐小段的移动,这样动画效果就出来了。
代码实现
/**
* 新增方法
*/
public void smoothScrollTo(int targeX, int targetY, int time) {
int deltaX = targeX - getScrollX();
int deltaY = targetY - getScrollY();
mScroller.startScroll(getScrollX(), getScrollY(), deltaX, deltaY, time);
invalidate();
}
@Override
public void computeScroll() {
if (mScroller.computeScrollOffset()) {
this.scrollTo(mScroller.getCurrX(), mScroller.getCurrY());
invalidate();
}
}