学习笔记

2022-08-01

覃某人的学习笔记(第一天)

安卓开发,关于横屏与全屏显示

今天遇到一个需求,需要在全屏的情况下进行界面设计。

横屏

横屏很简单,只用一句。

//横屏显示
    	setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

全屏显示

全屏显示意味着需要隐藏掉状态栏和虚拟按键。
这里我通过搜索引擎找到了解决方法。

 //去掉Activity上面的状态栏
   getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
 //去掉虚拟按键全屏显示
  getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

但是这样还是不行,当我滑动出虚拟按键时,他无法再隐藏。出现这样的情况可以加上。

protected void hideBottomUIMenu() {
        //隐藏虚拟按键,并且全屏
        if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api
            View v = this.getWindow().getDecorView();
            v.setSystemUiVisibility(View.GONE);
        } else if (Build.VERSION.SDK_INT >= 19) {
            //for new api versions.
            View decorView = getWindow().getDecorView();
            int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN;
            decorView.setSystemUiVisibility(uiOptions);
        }

加上这段代码就可以避免这个情况,通过我简单的测试还是发现了一个小问题。当我进入程序点击Home键再次点击app时,虚拟按键还是出现了,而且无法隐藏。这里就关乎到Active的一个生命周期的问题了,所以我们要在onstar这个生命周期中,再次调用上述的隐藏方法即可。

本文地址:https://blog.csdn.net/qq_48204632/article/details/107468610

《学习笔记.doc》

下载本文的Word格式文档,以方便收藏与打印。