在我的视频播放应用程序中,我使用这个标志:SYSTEM_UI_FLAG_HIDE_NAVIGATION
使导航栏消失,但是当我触摸屏幕时,导航栏出现,第一次触摸后,我的触摸事件和其他事件工作正常。
我的问题是我怎样才能接管第一次接触?
在我的视频播放应用程序中,我使用这个标志:SYSTEM_UI_FLAG_HIDE_NAVIGATION
使导航栏消失,但是当我触摸屏幕时,导航栏出现,第一次触摸后,我的触摸事件和其他事件工作正常。
我的问题是我怎样才能接管第一次接触?
你不能真正接管第一个事件。您可以实现View.OnSystemUiVisibilityChangeListener并在导航栏再次显示或隐藏时收到通知,然后根据其当前状态在第一次触摸时执行您想要的操作,如果可能的话。
但是,如SYSTEM_UI_FLAG_HIDE_NAVIGATION的文档中所述,您无法完全接管第一次触摸:
有一个限制:因为导航控件非常重要,所以最少的用户交互会导致它们立即重新出现。发生这种情况时,此标志和 SYSTEM_UI_FLAG_FULLSCREEN 都将自动清除,以便两个元素同时重新出现。
对于遇到此帖子的任何人,如果您的意图是隐藏导航/状态栏并且在您触摸屏幕时不让它回来,请查看此处描述的不同“沉浸式”配置:https://developer .android.com/training/system-ui/immersive
例如:
currentActivity?.window?.decorView?.systemUiVisibility = View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY or
View.SYSTEM_UI_FLAG_FULLSCREEN or
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
无论用户与屏幕进行任何交互,这都会有效地将您的屏幕置于“全屏”模式
要再次显示导航/状态栏,只需将其更改回:
currentActivity?.window?.decorView?.systemUiVisibility = View.SYSTEM_UI_FLAG_VISIBLE