10

在我的视频播放应用程序中,我使用这个标志:SYSTEM_UI_FLAG_HIDE_NAVIGATION使导航栏消失,但是当我触摸屏幕时,导航栏出现,第一次触摸后,我的触摸事件和其他事件工作正常。

我的问题是我怎样才能接管第一次接触?

4

2 回答 2

7

你不能真正接管第一个事件。您可以实现View.OnSystemUiVisibilityChangeListener并在导航栏再次显示或隐藏时收到通知,然后根据其当前状态在第一次触摸时执行您想要的操作,如果可能的话。

但是,如SYSTEM_UI_FLAG_HIDE_NAVIGATION的文档中所述,您无法完全接管第一次触摸:

有一个限制:因为导航控件非常重要,所以最少的用户交互会导致它们立即重新出现。发生这种情况时,此标志和 SYSTEM_UI_FLAG_FULLSCREEN 都将自动清除,以便两个元素同时重新出现。

于 2013-02-27T03:27:39.620 回答
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
于 2019-08-04T22:45:49.613 回答