在我的應用中,用戶可以進入全屏模式。在該模式下,無論用戶何時觸摸屏幕,它都會切換系統用戶界面的可見性。Android setSystemUiVisibility連續調用不起作用
如果UI被隱藏,則兩次觸摸會在彼此的約1秒鐘內出現(在現實世界中很長時間),UI顯示正常,但導航欄不會再次隱藏。這是儘管調用view.setSystemUiVisibility()
正確的標誌來隱藏它。
有問題的視圖是activity.getWindow().getDecorView()
。
在第二次觸摸正確隱藏系統UI之前等待1.5秒或更長時間。
標誌:
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()
的參數的一部分。
添加調試語句會導致足夠的延遲,導致不良行爲不再顯示。
爲什麼?我怎樣才能解決這個問題?
目前的「解決方案」是每隔100ms在一個區間內隱藏ui,直到取得適當的效果。 – William