Java 如何检测活动边界外的触摸事件
我的活动A超过了活动B。活动A并没有填满整个屏幕。(虽然不是对话框活动)。当在活动A边界之外检测到触摸事件时,我想关闭活动A。如何检测活动边界之外的触摸事件 @凌驾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)
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因为它是一个完整的显示实例。