0

画面にいくつかのボタンがあります。それらはすべて同じ View.OnTouchListener を使用しています。

私が見ているのは、それらの1つをタブで押すとACTION_DOWNが表示され、移動するとボタン領域の外に移動していてもACTION_MOVEが表示されることです。タッチアウトしてから内側に移動しても、何も得られません。

私が欲しいのは、「この領域からのイベントの送信を停止する」または「イベントの送信を停止する」という方法です(イベントが領域内にあるかどうかを検出します)

これは私の OnTouchListener です:

OnTouchListener touchListenerPad=new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {


                Log.d("PadControl", "event= "+event.getAction());
                if(v==up)
                {
                    Log.d("PadControl", "btn= up");

                    return false;
                }

                if(v==down)
                {
                    Log.d("PadControl", "btn= down");

                    return false;
                }

                if(v==right)
                {
                    Log.d("PadControl", "btn= right");

                    return false;
                }

                if(v==left)
                {
                    Log.d("PadControl", "btn= left");

                    return false;
                }
                return false;
            }
        };

        up.setOnTouchListener(touchListenerPad);
        down.setOnTouchListener(touchListenerPad);
        right.setOnTouchListener(touchListenerPad);
        left.setOnTouchListener(touchListenerPad);
4

1 に答える 1

0

あなたの説明に基づいて、ボタンの x と y を取得した後、View.getLocationOnScreen()またはgetLocationInWindow( ) でボタンの位置を検出する必要があります。 x から x + ボタンの幅まで、y から y + ボタンの高さまで、その後、MotionEvent.getRawX()MotionEvent.getRawYでタッチ イベントの x と y を取得して、ボタンの領域外にイベントがある場合は、イベントを制限できます。 () . この回答がお役に立てば幸いですが、私の回答に関して別の質問がある場合は、コメントでお気軽にお尋ねください:)

于 2013-06-02T17:05:01.973 に答える