he is coding

Scroller原理分析

| Comments

代码模版

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//实例化Scroller对象,在自定义View中,mContext可以在自定义View的构造方法中获取
Scroller mScroller = new Scroller(mContext);

//在一个自定义View中实现该方法,方法名可以自定义
public void smoothScrollTo(int destX,int destY){
    int scrollX = getScrollX();
    int scrollY  = getScrollY();
    int dx = destX - scrollX;
    int dy = destY - scrollY;
    //前两个参数表示起始位置,第三第四个参数表示位移量,最后一个参数表示时间
    //这一步只是赋值而已
    mScroller.startScroll(scrollX,scrollY,dx,dy,1000);
    //触发重绘,开始滑动
    invalidate();
}

//自定义View中重写该方法
@Override
public void computeScroll(){
    if(mScroller.computeScrollOffset()){
       //修改View#mScrollX和mScrollY
       scrollTo(mScroller.getCurrX(),mScroller.getCurrY());
       //新一轮重绘,不断循环
       postInvalidate();
    }
}

流程图

Comments