2013.06.26——— android 关于Scroller

2013.06.26——— android 关于Scroller
参考: http://blog.csdn.net/gemmem/article/details/7321910
http://ipjmc.iteye.com/blog/1615828
http://blog.csdn.net/c_weibin/article/details/7438323

1、Scroller并不会导致view滚动
Android里Scroller类是为了实现View平滑滚动的一个Helper类。通常在自定义的View时使用,在View中定义一个私有成员mScroller = new Scroller(context)。设置mScroller滚动的位置时,并不会导致View的滚动,通常是用mScroller记录/计算View滚动的位置,再重写View的computeScroll(),完成实际的滚动。

2、
View中computeScroll是一个空函数,当ViewGroup会对它的每个孩子调用drawChild(),而drawChild()会调用每个孩子的computScroll方法,所以经常见到 调用了Scoller的startScroll方法后 会调用invalidate(),并且computeScroll里面 也会调用 postInvalidate();

3、
computeScrollOffset()方法 当调用startScroll就返回为true了 直到动画执行完了,也就是滚动到了startScroll里面设定的位置

4、
startScroll()函数只是对它的一些成员变量做一些设置,这个设置的唯一效果就是导致mScroller.computeScrollOffset()    返回true。

5、
按我的理解 computeScrollOffset方法 里面会根据位置及持续时间来计算CurrX和CurrY的值,如果==FinalX和FinalY,就返回false,如果不相等 就返回false,然后postInvalidate(),一直调用,直到==,然后动画结束 不滚动了







猜你喜欢

转载自trylovecatch.iteye.com/blog/1894681