安卓全屏模式(ICS),第一次触摸会显示导航栏

10
在我的视频播放应用程序中,我使用了这个标志:SYSTEM_UI_FLAG_HIDE_NAVIGATION来隐藏导航栏,但是当我触摸屏幕时,导航栏会出现。第一次触摸后,我的触摸事件和其他事件都可以正常工作。我的问题是如何接管第一次触摸?
2个回答

7
您无法真正接管第一个事件。您可以实现View.OnSystemUiVisibilityChangeListener,并在导航栏再次显示或隐藏时得到通知,然后根据其当前状态在第一次触摸时进行您想要的操作(如果可能的话)。
但是,正如SYSTEM_UI_FLAG_HIDE_NAVIGATION文档中所述,您无法完全接管第一个触摸事件:
引用: 导航控件非常重要,因此最少的用户交互都会立即导致它们重新出现。当这种情况发生时,系统会自动清除此标志和SYSTEM_UI_FLAG_FULLSCREEN,以便两个元素同时重新出现。

1

如果您的意图是隐藏导航栏/状态栏,并且不希望在触摸屏幕时它重新出现,请查看此处描述的不同“沉浸式”配置: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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接