2012-06-27 97 views
1

我想在這裏分開幾件事情。獲取只是onTouch事件(安卓)

我有一個Imagebuttons程序。他們有onTouchListeners附加到他們。

我希望觸摸事件被觸發,而不是點擊觸發。我的意思是,如果我使用鼠標點擊,例如,我不想觸發連接到ImageButton的onTouch事件。然而,當您在按鈕上方單擊鼠標時它會被觸發。

觸摸發生時,是否可以觸發事件?

我的代碼:

myImageButton.setOnTouchListener(new Button.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent arg1) { 
       if (arg1.getAction() == android.view.MotionEvent.ACTION_DOWN) {  
        Toast.makeText(LiVoiceActivity.this, 
            "You touched me!", 
            Toast.LENGTH_LONG).show(); 
       } 
       return true; 
      } 
    }); 

謝謝!

回答

0

在MotionEvent類中存在一個稱爲Tool_Type的字段。我實現了一個檢查的鼠標類型在這裏:

API 14 AKA EASY MODE

myImageButton.setOnTouchListener(new Button.OnTouchListener() { 
       @Override 
       public boolean onTouch(View v, MotionEvent arg1) { 
        if (arg1.getAction() == android.view.MotionEvent.ACTION_DOWN 
           && (MotionEvent.TOOL_TYPE_MOUSE != arg1.getToolType(0)) {  
         Toast.makeText(LiVoiceActivity.this, 
             "You touched me!", 
             Toast.LENGTH_LONG).show(); 
        } 
        return true; 
       } 
     }); 

API 9

myImageButton.setOnTouchListener(new Button.OnTouchListener() { 
       @Override 
       public boolean onTouch(View v, MotionEvent arg1) { 
        if (arg1.getAction() == android.view.MotionEvent.ACTION_DOWN 
           && (arg1.getSize() > 1) {  
         Toast.makeText(LiVoiceActivity.this, 
             "You touched me!", 
             Toast.LENGTH_LONG).show(); 
        } 
        return true; 
       } 
     }); 

現在這個檢查MotionEvent的大小好評。 PRESUMABLY,鼠標點擊大小爲1,因此,只能識別大於1的大小。玩弄該數字,看看是否可以區分鼠標和手指觸摸。

+0

jack57,謝謝你的回答。我試圖使用你的代碼,但它說TOOL_TYPE_MOUSE也無法解析,它找不到方法getToolType()。有小費嗎? –

+0

聽起來像一個API問題:(你在使用什麼API?例如API 10 == Android 2.3.3 –

+0

確認的API問題,只適用於14及以上版本請讓我知道你在使用什麼API –