需求
在開發中有時會監聽使用者的手指移動方向,來達到我們想要的效果。例如手機解屏,滑動删除等操作。在這裡寫出實作的關鍵代碼。
關鍵代碼實作
setOnTouchListener(new OnTouchListener() {
private float startX,startY,offsetX, offsetY;
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
startX = motionEvent.getX();
startY = motionEvent.getY();
break;
case MotionEvent.ACTION_UP:
offsetY = motionEvent.getY() - startY;
offsetX = motionEvent.getX() - startX;
if (Math.abs(offsetX) > Math.abs(offsetY)) {
//水準方向的意圖
if (offsetX < -5) {
//進行左滑的操作
Log.e(TAG, "onTouch: 左" );
} else if (offsetX > 5) {
//進行右滑的操左
Log.e(TAG, "onTouch: 右");
}
}else {
if (offsetY < -5) {
//進行上滑的操左
Log.e(TAG, "onTouch: 上");
} else if (offsetY > 5) {
//進行下滑的操左
Log.e(TAG, "onTouch: 下");
}
}
break;
}
return true;
}