gpt4 book ai didi

android - 在全屏模式下平板电脑上的状态栏 (SYSTEM_UI_FLAG_LOW_PROFILE) 反复变暗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:17:49 25 4
gpt4 key购买 nike

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

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);

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

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

它有时会起作用,但在多次尝试后它会崩溃。

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

我的问题是:实现状态栏自动变暗的最佳方式是什么?或者,在我的情况下,任何方式。

最佳答案

对此的解决方案是在您的 Root View 上使用 View.OnSystemUiVisibilityChangeListener。

当事件触发时,您必须等待一段时间才能再次调暗它们。计时器会很合适。

private class MySystemUiVisibilityChangeListener implements View.OnSystemUiVisibilityChangeListener {

@Override
public void onSystemUiVisibilityChange(int visibility) {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
MyActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
mRootView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
}
});
}
}, 1000);
}

}

关于android - 在全屏模式下平板电脑上的状态栏 (SYSTEM_UI_FLAG_LOW_PROFILE) 反复变暗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12991535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com