跟踪所有触摸事件

时间:2018-07-11 14:52:41

标签: android android-activity ontouchevent rootview

情况
我想在我的应用中实现超时。如果用户在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`也是如此。

问题
如何检测活动或整个应用程序上发生的任何触摸?

1 个答案:

答案 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);
}