学习记录自《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();
}
}