Android动态去除系统自带标题栏状态栏及竖屏横屏的全屏显示

Posted 宾有为

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android动态去除系统自带标题栏状态栏及竖屏横屏的全屏显示相关的知识,希望对你有一定的参考价值。

一、如何去除系统自带标题栏?

(1)直接修改value目录下的styles.xml文件默认的样式

(2)在value目录下的styles.xml文件新建一个style
    <style name="NoTitle_one" parent="Theme.AppCompat.Light.NoActionBar" />

            <!---->

    <style name="NoTitle_two">
        <item name="android:windowNoTitle">true</item>
    </style>

            <!---->

    <style name="NoTitle_three">
        <item name="windowNoTitle">true</item>
    </style>

注意:在styles文件声明后都要去AndroidManifest.xml文件添加引用

        <activity
            android:name="com.xxx.xxx.xxx"
            android:theme="@style/NoTitle" />
(3)在代码onCreate方法里实现,该方法需要在setContentView前使用
requestWindowFeature(Window.FEATURE_NO_TITLE);
(4)如果你的类继承自AppCompatActivity类,不妨试试最简单的办法
getSupportActionBar().hide();
(5)如果继承的是Activity,还可以这样玩喔
        ActionBar actionBar = getActionBar();
        if (actionBar != null) 
            actionBar.hide();
        

还有一种好像是在xml那边设置的,忘记了,想起来再补上

如果以上方法都没用的话,那么就有可能你的标题栏不是系统自带滴,而是自己敲代码实现滴

二、如何去除系统状态栏?

(1)当返回了设置该属性的activity,状态栏什么的都会统统的恢复原来的样子喔

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);

(2)推荐使用该方法

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

有不懂的可以戳这里看看

三、如何全屏显示?

思路:全屏,可以把他想象成去掉状态栏和系统自带标题栏。

(1)竖屏全屏显示

参照上面的内容去掉标题栏和状态栏即可(看需求)。

(2)横屏全屏显示

设置横屏全屏显示前,我们需要先将屏幕横过来

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//设置横屏

会横屏就要会返回竖屏

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//设置竖屏

在ActivityManifest.xml需要全屏显示的activity加上

android:configChanges="keyboardHidden|orientation|screenSize"

进行横屏操作的时候,差不多相当于重载了该界面,需要对横屏前的数据进行保存
如果要保存控件的数据,给控件起一个id即可
如果要保存屏幕相关数据,就要在onConfigurationChanged方法里写相应的配置

(3)全屏显示还可以这样喔~
      //全屏显示
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) 
          if (Build.VERSION.SDK_INT >= 21) 
              // 全屏显示,隐藏状态栏和导航栏,拉出状态栏和导航栏显示一会儿后消失(SDK版本要大于或等于21才有该功能)
              getWindow().getDecorView().setSystemUiVisibility(
                      View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                              | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                              | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                              | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                              | View.SYSTEM_UI_FLAG_FULLSCREEN
                              | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
           else 
              // 全屏显示,隐藏状态栏
              getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
          
      

参考:
Android开发——去掉系统自带标题栏的几种方式

以上是关于Android动态去除系统自带标题栏状态栏及竖屏横屏的全屏显示的主要内容,如果未能解决你的问题,请参考以下文章

android2048开发初始0怎么去掉

Android全屏(包含3种隐藏顶部状态栏及标题栏和一种隐藏Android 4.0平板底部状态栏的方法)

Android全屏(包含3种隐藏顶部状态栏及标题栏和一种隐藏Android 4.0平板底部状态栏的方法)

Android 隐藏状态栏、标题栏、透明状态栏的几种方式

android中怎么计算标题栏高度

Android 之 沉浸式状态栏及顶部状态栏背景色设置