从 API 14 开始,您可以SYSTEM_UI_FLAG_HIDE_NAVIGATION
在 Activity 中的 View 上使用此标志来告诉系统您要隐藏导航栏,直到有用户交互(屏幕触摸)。一旦用户点击屏幕,就会显示该栏。
当用户触摸屏幕时,我正在执行此操作的 Activity 会执行一些操作(启动单独的 Activity),然后将上述标志添加到我的视图中,这非常有效。
添加该标志后,系统会拦截第一次屏幕触摸并通过显示导航栏对其做出反应。直到第二次触摸,我的任何 View 或我的 Activity 才接收到 TouchEvents。
有谁知道我可以设置一个监听器的方法,让我在第一次触摸屏幕时启动我的第二个活动,而不是在使用这个隐藏导航标志时需要双击?
我已经尝试了以下所有方法,当第一次触摸屏幕以显示导航栏时,我没有收到任何回调。
@Override
public void onUserInteraction(){
Log.i(myTag, "INTERACT");
}
@Override
public boolean onGenericMotionEvent(MotionEvent me){
Log.i(myTag, "GENERIC");
return true;
}
//I thought maybe the size change would lead to a callback here. No dice though.
@Override
public void onWindowAttributesChanged(WindowManager.LayoutParams params){
Log.i(myTag, "WINDOW CHANGE");
}
@Override
public boolean dispatchTouchEvent(MotionEvent me){
Log.i(myTag, "TOUCH");
return true;
}
注意:我并不是要阻止在第一次触摸时显示导航栏,我只是想在该事件发生时还采取一些其他措施。