1

私はここでいくつかのことを分離しようとしています。

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;
            }
    });

ありがとうございました!

4

1 に答える 1

0

MotionEventクラスにはTool_Typeと呼ばれるフィールドがあります。ここでマウスタイプのチェックを実装しました:

API14AKAイージーモード

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より大きいサイズしか認識されません。その数値を試して、マウスと指のタッチを区別できるかどうかを確認してください。

于 2012-06-27T03:30:52.070 に答える