Android觸摸事件MotionEvent詳解


觸摸事件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():獲取點擊事件距離整個屏幕頂邊的距離,即絕對坐標


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM