0

我的屏幕上有几个按钮。它们都具有相同的 View.OnTouchListener。

我所看到的是,当我点击其中一个时,我得到 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 回答