Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 中 onTouch 和OnClick 沖突的處理

Android 中 onTouch 和OnClick 沖突的處理

編輯:關於Android編程

在Android中,對一個View同時調用OnTouch事件和OnClick事件時,導致事件沖突,比如onClick事件打算執行A動作,OnTouch事件
打算執行B動作,但是在實際使用時會發現,當調用OnTouch時,有可能會同時執行A,B兩個動作,這是因為OnClick事件本身就是在
OnTouch事件中發生的;
在onTouch事件中,如果返回true,就不會執行onClick,返回false,就同時執行onClick方法,要想把OnTouch和onClick事件完全的區
分,這裡想到了一個不是很完美但使用完全沒有錯誤的方法,就是在 OnTouch中的MotionEvent.ACTION_DOWN 時,記錄下點(X1,Y1),
在 MotionEvent.ACTION_UP 時,記錄下點(X2,Y2),然後比對 倆點之間的距離,如果小於一個較小數值(比如5),就認為是Click事
件,onTouch中返回false,如果距離較大,可以當作onTouch事件去處理,返回true:
示范如下:
public boolean onTouch(View v, MotionEvent event) { 
            if (event.getAction() == MotionEvent.ACTION_DOWN) { 
                x1 = event.getX(); 
                y1 = event.getY(); 
            } 
            if (event.getAction() == MotionEvent.ACTION_UP) { 
                x2 = event.getX(); 
                y2 = event.getY(); 
                if (Math.abs(x1 - x2) < 6) { 
                    return false;// 距離較小,當作click事件來處理 
                } 
                if(Math.abs(x1 - x2) >60){  // 真正的onTouch事件 
                } 
            } 
            return true;// 返回true,不執行click事件 
        } 
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved