在《View的滚动原理简单解析》一文中对scrollBy和scrollTo做了简单的说明,通过该文可以对scrollTo/scollBy方法有了直观的理解。但是有个小问题就是scrollTo方法在滚动的过程中由于是瞬间的移动到目标坐标点,所以我们没法在滚动的过程中做任何控制,这个在体验上来说肯定不是那么的友好。那么如果我们想在滚动的过程中做某些滚动的特效,该怎么实现呢?这就是这篇博文的主角Scroller的用武之地。今天这篇博文就对Scroller这个类在来一个简单的说明,跟上篇博文一样文章的最后也会提供一个小小的例子demo来加深理解和应用。
在Scroller的众多方法中,有两个方法最主要,翻开网上的各种博客都少不了这两个方法的身影,这两个分方法就是startScroll()和computeScrollOffset()这两个方法:
/***
*@param startX:开始滚动时候的x坐标
*@param startY:开始滚动时候的y坐标
*@param dx:水平方向上要滚动的距离
*@param dy:竖直方向上要滚动的距离
*@param duration:滚动持续的时间
**/
public void startScroll(int startX, int startY, int dx, int dy, int duration) {
mMode = SCROLL_MODE;
mFinished = false;
mDuration = duration;
//初始化动画开始时间
mStartTime = Ani