粘性沉浸模式下,状态栏一经更改,状态栏最初是可见且不透明的

时间:2019-11-27 07:20:23

标签: android android-statusbar

我添加了标志SYSTEM_UI_FLAG_IMMERSIVE_STICKY,它确实起作用。 但是,当旋转设备时,除非我向下滑动然后再次向上滑动,状态栏将变为不透明。

我阅读了文档:

  

实现onWindowFocusChanged()。如果您获得窗口焦点,则可能   要重新隐藏系统栏。例如,如果失去窗口焦点   由于应用上方显示的对话框或弹出菜单,您可能会   想要取消您先前安排的所有未决“隐藏”操作   使用Handler.postDelayed()或类似的东西。

我猜想状态栏必须具有如上所述的“待处理”隐藏操作。 但是我已经在onWindowFocusChanged()中重新设置了所有标志

然后,我检查了文档中链接的三个示例项目。但是在示例中,它们并没有像我已经做的那样以不同的方式覆盖所述方法。

这是我的主要活动

public class MainActivity extends Activity {
    private View decorView;
    private AtomView atomView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Display display = getWindowManager().getDefaultDisplay();
        Point size = new Point();
        display.getRealSize(size);
        atomView = new AtomView(this, size);
        decorView = getWindow().getDecorView();
        resetDecorView();
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
        setContentView(atomView);

    }

    @Override
    protected void onPause(){
        super.onPause();
        atomView.pause();
    }

    @Override
    protected void onResume(){
        super.onResume();
        resetDecorView();
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
        setContentView(atomView);
        atomView.resume();
    }

    @Override
    public void onWindowFocusChanged(boolean hasFocus){
        super.onWindowFocusChanged(hasFocus);
        if(hasFocus) {
            resetDecorView();
        }
    }

    private void resetDecorView(){
        decorView = getWindow().getDecorView();
        decorView.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_FULLSCREEN
        );
    }
}

0 个答案:

没有答案