Android setSystemUiVisibility 连续调用不起作用
Android setSystemUiVisibility consecutive calls don't work
在我的应用中,用户可以进入全屏模式。在该模式下,每当用户触摸屏幕时,它都会切换系统 ui 可见性。
如果 ui 被隐藏,则两次触摸发生在大约 1 秒内(在现实世界中是很长一段时间),ui 会正确显示,但导航栏是不再隐藏。尽管 view.setSystemUiVisibility()
被调用时使用了正确的标志来隐藏它。
有问题的视图是 activity.getWindow().getDecorView()
。
在第二次触摸正确隐藏系统之前等待 1.5 秒或更长时间 ui。
标志:
private static final int STATIC_LAYOUT_FLAGS =
View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
private static final int HIDDEN_FLAGS =
STATIC_LAYOUT_FLAGS |
View.SYSTEM_UI_FLAG_FULLSCREEN |
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
再次说明一下,这是预期的行为:
- 状态栏和导航栏一开始是隐藏的
- 屏幕触摸显示状态栏和导航栏
- 第二个屏幕触摸隐藏状态栏和导航栏
如果步骤 (2) 和 (3) 之间的时间少于大约 1 秒,则导航栏无法正确隐藏(但状态栏可以)。在这种情况下,标志 SYSTEM_UI_FLAG_HIDE_NAVIGATION
是 而不是 设置,尽管它是发送到 setSystemUiVisibility()
.
的参数的一部分
添加调试语句会导致足够的延迟,不良行为不会再出现。
为什么?我该如何解决这个问题?
我遇到了同样的问题: 并找到了根本原因。它可以防止应用程序在全屏模式下锁定设备。因此,每次用户点击屏幕时都会显示导航栏,系统会跳过您的 setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION)
1000 毫秒。
在我的应用中,用户可以进入全屏模式。在该模式下,每当用户触摸屏幕时,它都会切换系统 ui 可见性。
如果 ui 被隐藏,则两次触摸发生在大约 1 秒内(在现实世界中是很长一段时间),ui 会正确显示,但导航栏是不再隐藏。尽管 view.setSystemUiVisibility()
被调用时使用了正确的标志来隐藏它。
有问题的视图是 activity.getWindow().getDecorView()
。
在第二次触摸正确隐藏系统之前等待 1.5 秒或更长时间 ui。
标志:
private static final int STATIC_LAYOUT_FLAGS =
View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
private static final int HIDDEN_FLAGS =
STATIC_LAYOUT_FLAGS |
View.SYSTEM_UI_FLAG_FULLSCREEN |
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
再次说明一下,这是预期的行为:
- 状态栏和导航栏一开始是隐藏的
- 屏幕触摸显示状态栏和导航栏
- 第二个屏幕触摸隐藏状态栏和导航栏
如果步骤 (2) 和 (3) 之间的时间少于大约 1 秒,则导航栏无法正确隐藏(但状态栏可以)。在这种情况下,标志 SYSTEM_UI_FLAG_HIDE_NAVIGATION
是 而不是 设置,尽管它是发送到 setSystemUiVisibility()
.
添加调试语句会导致足够的延迟,不良行为不会再出现。
为什么?我该如何解决这个问题?
我遇到了同样的问题:setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION)
1000 毫秒。