Android - 在全屏模式下在平板电脑上反复调暗状态栏(SYSTEM_UI_FLAG_LOW_PROFILE)的最佳解决方案是什么?

Tom*_*zek 6 user-interface android statusbar tablet

我知道如何在Android平板电脑上调暗状态栏.我使用该代码执行此操作:

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
Run Code Online (Sandbox Code Playgroud)

它工作正常但只有一次.当我触摸状态栏时,它会激活,之后我回到应用程序的活动状态,状态栏仍然激活(带有图标而不是点).我尝试登录onResume调用,但它没有调用,所以我再次搜索并发现另一个解决方案 - 使用handler更改状态栏的可见性:

getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
    @Override
    public void onSystemUiVisibilityChange(int visibility) {
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
    }
});
Run Code Online (Sandbox Code Playgroud)

它有时会起作用但经过多次尝试后会崩溃.

我需要这个用于游戏 - 理论上我可以尝试在每次触摸或每次在主循环中调用它但这似乎是坏主意(另外它必须从特定线程调用 - 只有创建视图层次结构的原始线程可以触及它的观点.)

我的问题是:实现状态栏自动调暗的最佳方法是什么?或者,在我的情况下,无论如何.

kev*_*inl 0

我也遇到了这个问题(但对于隐藏导航标志),似乎谷歌本身就禁用了不断隐藏/调暗系统栏的功能。我确实同意您的观点,不断调用该方法可能会在线程上失败或导致性能问题,特别是考虑到移动设备上发生如此多的 ontouch 事件。

最终,我认为没有解决方案,除非用户 root 其设备以永久删除系统栏。