情况
我想在我的应用中实现超时。如果用户在2分钟内未触摸屏幕,则会显示不活动片段。
我到目前为止所得到的
我正在使用实现Application
的自定义Application.ActivityLifecycleCallbacks
来跟踪活动生命周期。这样,我知道哪个Activity
当前位于顶部,并且可以访问其FragmentManager
以显示超时时我的不活动状态Fragment
。背景Thread
不断检查上一次检测到的触摸是否早于2分钟。
问题
我不知道如何检测活动中发生的每一次接触。我尝试将OnTouchListener
添加到activity.getWindow().getDecorView().setOnTouchListener()
,但是只有在decorview被触摸时才调用它。例如,如果触摸了其顶部的按钮,则不会通知我的听众。 activity.getContentScene()' returns null for me, so i can't access the root
ViewGroup`也是如此。
问题
如何检测活动或整个应用程序上发生的任何触摸?
答案 0 :(得分:0)
在您的活动中覆盖调度触摸事件
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
Rect viewRect = new Rect();
view.getGlobalVisibleRect(viewRect);
//or
int x= ev.getRawX();
int y= ev.getRawY();
if(/*check bounds of your view*/){
// set your views visiblity to gone or what you want.
}
//for prevent consuming the event.
return super.dispatchTouchEvent(ev);
}