1.View的滑动之Scroller
要实现View的平滑滑动,有一种方法是要借助Scroller来实现。
Scroller本身并不能实现View的平滑滑动,需要借助View的computeScroll方法才能完成弹性滑动的效果,它不断的让View重绘,每次重绘距离开始滑动都有一段时间间隔,通过这个时间间隔,Scroller会得出View当前的滑动位置(调用mScroller.computeScrollOffset()可以判断是否滑动结束,返回false时滑动结束,该方法的源码中是根据流逝的时间片和完成动画的百分比的乘积来计算一次滑动),知道了滑动位置就可以通过scrollTo方法来完成View的滑动。如此,View的每次重绘都会导致View进行小幅度的滑动,而多次的小幅度滑动就组成了弹性滑动,这就是Scroller的工作机制。
2.设计模式思考
Scroller的设计很是精妙,这个过程没用对View进行引用,内部也没有计时器。