为了避免 滑动的生硬,可以采用弹性滑动,提高用户体验。这里主要有 :Scroller、动画、延时三种方式。如下是 Scroller 的典型使用,主要是 invalidate方法起的作用
Scroller mScroller = new Scroller(context);
// 滑动到指定位置@param destX X 滑动距离 @param destY Y 滑动距离
private void smoothScrollTo(int destX, int destY) {
int scrollX = getScrollX();//滑动起点X
int scrollY = getScrollY();//滑动起点Y
mScroller.startScroll(scrollX, scrollY, destX, destY, 1000); //1000 ms内慢慢滑向 (destX,destY)
invalidate(); //重绘
}
@Override // 使View 不断重绘
public void computeScroll() {
// computeScrollOffset 方法通过时间流逝百分比计算 scrollX和scrollY ,返回true 表示滑动未结束
if (mScroller.computeScrollOffset()) {
scrollTo(mScroller.getCurrX(), mScroller.getCurrY());//滑动到当前位置,通过小幅度滑动 实现弹性滑动
postInvalidate();//再次重绘}
}。