學習記錄自《Android開發藝術探索》.
Scroller
彈性滑動對象,用於實現View的彈性滑動
private Scroller mScroller;
public MyView(Context context) {
this(context, null);
}
public MyView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
mScroller = new Scroller(context);
}
/**
* 緩慢滑動到指定位置
*
* @param destX
* @param destY
*/
private void smoothScrollTo(int destX, int destY) {
int scrollX = getScrollX();// 當前view的左上角相對於母視圖的左上角的X軸偏移量
int delta = destX - scrollX;
mScroller.startScroll(scrollX, 0, delta, 0, 1000);
invalidate();
}
@Override
public void computeScroll() {
if (mScroller.computeScrollOffset()) {//返回爲true說明滾動尚未完成
scrollTo(mScroller.getCurrX(), mScroller.getCurrY());
postInvalidate();
}
}