本篇文章屬于android仿薄荷卷尺系列文章
滑動完成過完后要調(diào)整偏移量,使偏移量剛好為oneStep的整數(shù)倍
滑動完成過完后要調(diào)整偏移量,使偏移量剛好為oneStep的整數(shù)倍
1. 判斷Scroll.fling滑動是否完成
方法:在ACTION_UP后,postDelay一個Runnable,在Runnabel中,通過判斷scrollx是否在變化,如果scrollX沒有變化史隆,就證明已經(jīng)滑動完成。
...
case MotionEvent.ACTION_UP:
...
sartAjust();
...
...
Runnable adjustRunnable = new Runnable() {
@Override
public void run() {
int scrollX = getScrollX();
if (currentScrollX == scrollX) {//滑動結(jié)束
調(diào)整代碼
} else {//繼續(xù)檢測
sartAjust();
}
}
};
private void sartAjust() {
currentScrollX = getScrollX();
postDelayed(adjustRunnable, CHECKTIME);
}
2. 調(diào)整偏移距離的計算代碼
image
int more = scrollX % oneStep;//多余距離
int remain=oneStep * (scrollX / Math.abs(scrollX))-more;//剩余距離
if (Math.abs(more) > oneStep / 2) {
scrollBy(remain, 0);
} else {
scrollBy(-more, 0);
}