Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检测活动边界外的触摸事件_Java_Android_Android Layout_View_Android Activity - Fatal编程技术网

Java 如何检测活动边界外的触摸事件

Java 如何检测活动边界外的触摸事件,java,android,android-layout,view,android-activity,Java,Android,Android Layout,View,Android Activity,我的活动A超过了活动B。活动A并没有填满整个屏幕。(虽然不是对话框活动)。当在活动A边界之外检测到触摸事件时,我想关闭活动A。如何检测活动边界之外的触摸事件 @凌驾 public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_OUTSIDE) { Toast.makeText(getApplicationContext(), "Hi", 3000)

我的活动A超过了活动B。活动A并没有填满整个屏幕。(虽然不是对话框活动)。当在活动A边界之外检测到触摸事件时,我想关闭活动A。如何检测活动边界之外的触摸事件

@凌驾

public boolean onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
        Toast.makeText(getApplicationContext(), "Hi", 3000).show();

        return true;
    }

    return false;
}
此代码不起作用,因为它仅适用于对话框活动。请帮忙……提前谢谢:)


我不知道这是否有效,请测试:)
但这应该很容易:

在活动A的
onCreate()
中:

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    //set us to non-modal, so that others can receive the outside touch events.
    getWindow().setFlags(LayoutParams.FLAG_NOT_TOUCH_MODAL, LayoutParams.FLAG_NOT_TOUCH_MODAL);

    //and watch for outside touch events too
    getWindow().setFlags(LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);

    //be sure to set the content view after setting those flags!!
    setContentView(R.layout.my_view);
}
现在,您将在正常的“onTouch()”中接收触摸事件

只需检查它是否在外面(获取x和y并对照窗口的位置进行检查)

活动A没有填满整个屏幕。(虽然不是对话活动)…那么它是什么?…您可能没有使用全屏..但它占据了整个屏幕。。你可以设置x,y限制,如果超过你可以这样做operation@manmohan没有必要让活动填满整个屏幕。。。我对活动进行了填充,使其显示为对话活动。除了填充之外,您还可以使用主题对话框作为活动。如果我如您所说的那样思考,那么告诉任何其他活动或其他东西是否可以使用剩余的空间。假设触摸超出活动范围,那么活动现在将如何获得它。要清除更多信息,请使用Windowmanager获取所有信息touchevent因为它是一个完整的显示实例。