觸摸事件MotionEvent在用戶交互中,占著非常重要的地位.首先,來看看MotionEvent中封裝的一些常用的事件常量,它定義了觸摸事件的不同類型. 1.單點觸摸按下動作 public static final int ACTION_DOWN = 0; 2.單點觸摸抬起動作 public st ...
觸摸事件MotionEvent在用戶交互中,占著非常重要的地位.首先,來看看MotionEvent中封裝的一些常用的事件常量,它定義了觸摸事件的不同類型.
1.單點觸摸按下動作
public static final int ACTION_DOWN = 0;
2.單點觸摸抬起動作
public static final int ACTION_UP = 1;
3.觸摸點移動動作
public static final int ACTION_MOVE = 2;
4.觸摸動作取消
public static final int ACTION_CANCEL = 3;
5.觸摸動作超出邊界
public static final int ACTION_OUTSIDE = 4;
6.多點觸摸按下動作
public static final int ACTION_POINTER_DOWN = 5;
7.多點離開動作
public static final int ACTION_POINTER_UP = 6;
通常情況下,我們會在onTouchEvent(MotionEvent event)方法中通過event.getAction()方法來獲取觸摸事件的類型,並使用switch-case方法來進行篩選,這個代碼的模式基本固定,如下
@Override
public boolean onTouchEvent(MotionEvent event) {
//獲取當前輸入點的X . Y坐標(視圖坐標)
int X = (int) event.getX();
int Y = (int) event.getY();
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
//處理按下事件
break;
case MotionEvent.ACTION_MOVE:
//處理移動事件
break;
case MotionEvent.ACTION.UP:
//處理抬起事件
break;
}
return true;
}
在不涉及多點操作情況下,通常可以使用以上代碼來完成觸摸事件的監聽,不過這裡只是一個代碼模板,實際開發過程中會用到複雜的邏輯的觸摸事件.
在Android中,系統提供了非常多的方法來獲取坐標值,相對距離等.方法豐富固然好,但也給初學者帶來了困惑,不知道在實際情況下採用什麼方法,如下總結了一些API,結合坐標系來看看該如何使用它們
這些方法可以分成如下兩個類別:
* View提供的獲取坐標方法
getTop():獲取到的是View本身的頂邊到其父佈局頂邊的距離
getLeft():獲取到的View自身的左邊到其父佈局左邊的距離
getRight():獲取到的是View自身的右邊到其父佈局左邊的距離
getBottom():獲取到的是View自身的底部到其父佈局頂邊的距離
*MotionEvent提供的方法
getX():獲取點擊事件距離控制項左邊的距離,即視圖坐標
getY():獲取點擊事件距離控制項頂邊的距離,即視圖坐標
getRawX():獲取點擊事件距離整個屏幕左邊的距離,即絕對坐標
getRawY():獲取點擊事件距離整個屏幕頂邊的距離,即絕對坐標