获得onTouch事件(Android)

时间:2012-06-27 03:21:23

标签: android ontouchlistener

我想在这里分开一些东西。

我有一个带图像按钮的程序。他们附有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;
            }
    });

谢谢!

1 个答案:

答案 0 :(得分: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的大小。使用该数字进行游戏,看看是否可以区分鼠标和手指触摸。