2012-06-27 4 views
1

Я пытаюсь отделить несколько вещей здесь.Получение JUST события onTouch (Android)

У меня есть программа с Imagebuttons. К ним прикреплены onTouchListeners.

Я хочу, чтобы событие касания было уволено ТОЛЬКО с прикосновением, а не щелчком. Я имею в виду, если я использую мышь, чтобы щелкнуть, например, я не хочу, чтобы событие onTouch, прикрепленное к ImageButton, запускалось. Однако он запускается, когда вы нажимаете кнопку мыши над кнопкой.

Возможно ли запустить мероприятие JUST, когда произойдет прикосновение?

Мой код:

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 ЛЕГКИЙ РЕЖИМ

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 получил. ПРЕДВАРИТЕЛЬНО, щелчок мышью будет иметь размер 1, поэтому узнайте только размеры, превышающие 1. Играйте с этим номером и посмотрите, можете ли вы отличить мышь от пальца.

+0

jack57, благодарю вас за ответ. Я пытался использовать ваш код, но он говорит, что TOOL_TYPE_MOUSE также не может быть разрешен, он не может найти метод getToolType(). Какие-нибудь советы? –

+0

Похоже на проблему API: (с каким API вы работаете? Пример API 10 == Android 2.3.3 –

+0

Подтвержденная проблема API, работает только с 14 и выше. Пожалуйста, дайте мне знать, с каким API вы работаете. –