private float downX; //按下時 的X座標
private float downY; //按下時 的Y座標
@Override
public boolean onTouchEvent(MotionEvent event) {
//在觸發時回去到起始座標
float x = event.getX();
float y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
//將按下時的座標存儲
downX = x;
downY = y;
break;
case MotionEvent.ACTION_UP:
//獲取到距離差
float dx = x - downX;
float dy = y - downY;
//防止是按下也判斷
// Toast.makeText(this, "r", Toast.LENGTH_SHORT).show();
if (Math.abs(dx) > 5 && Math.abs(dy) > 5) {
//通過距離差判斷方向
int orientation = getOrientation(dx, dy);
LogUtil.v(TAG,"r");
switch (orientation) {
case 'r':
if (isCanFinish) {
// startActivity(new Intent(PlayGameActivity.this, MainActivity.class));
}
break;
}
}
break;
}
return super.onTouchEvent(event);
}
/**
* 根據距離差判斷 滑動方向
* @param dx X軸的距離差
* @param dy Y軸的距離差
* @return 滑動的方向
*/
private int getOrientation(float dx, float dy) {
if (Math.abs(dx) > Math.abs(dy)) {
//X軸移動
return dx > 0 ? 'r' : 'l';
} else {
//Y軸移動
return dy > 0 ? 'b' : 't';
}
}
Android 判斷手指滑動方向
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.