android状态栏透明代码(android设置状态栏颜色)
2022-01-12 18:32:05

对于Android来说什么是沉浸式状态栏?给个图你对比看就懂了:

使用kotlin实现沉浸式状态栏

非沉浸式

使用kotlin实现沉浸式状态栏

沉浸式

对比上面两张照片后,沉浸式和非沉浸式状态栏的区别就出来了,当然沉浸式状态栏还有其他种类。比如像你在玩的时候,你如果没有在状态栏的位置下拉,状态栏是不会出来的,这种也是常用的沉浸式状态栏一种。

好,了解完沉浸式状态栏和非沉浸式状态栏的区别后,我们现在开始真正地去实现它。

首先,我们要先去判断我们的Android版本,如果是大于5.0,我们就适配我们的沉浸式状态栏。接着,我们需要获取我们最上层的View来进行操作,Android顶层的View是window,所以我们先获取window,然后去设置我们的systemUiVisibility为全屏且需要状态栏,当然别忘了设置statusBar为透明。代码如下:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //判断Android的版本是否大于5.0
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){

            //获取最上层的View进行操作
            window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    .or(View.SYSTEM_UI_FLAG_LAYOUT_STABLE)

            window.statusBarColor = Color.TRANSPARENT//透明
        }
    }
}

还有,我们需要在AndroidManifest文件下设置我们activity的主题为NoActionBar,代码如下:

  <activity android:name=".MainActivity"
            android:theme="@style/Theme.AppCompat.Light.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

最后贴一下我的XML布局文件的代码,方便小白阅读实现:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

  <LinearLayout
      android:background="@color/colorAccent"
      android:layout_height="match_parent"
      android:layout_width="match_parent"/>
>
</androidx.constraintlayout.widget.ConstraintLayout>

这样我们的沉浸式的状态栏就实现了,这是我们第一种实现方式,那么如果想实现游戏全屏沉浸式状态栏又该怎么样做呢?别急,我早有准备,我们其他代码不改,在我们的systemUiVisibility的设置项中参考以下代码,添加上去就能轻松实现。这个时候,我们的导航栏和状态栏都被隐藏了,只有在拉下的情况会出现,过一段时间又会自动地缩回去。

       window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    .or(View.SYSTEM_UI_FLAG_LAYOUT_STABLE)
                    .or(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION)
                    .or(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION)
                    .or(View.SYSTEM_UI_FLAG_FULLSCREEN)
                    .or(View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY)

这样我们的沉浸式状态栏就轻松地实现好了,如果有什么不对的地方,欢迎大家指出一起探讨哦!

对于Android来说什么是沉浸式状态栏?给个图你对比看就懂了:

使用kotlin实现沉浸式状态栏

非沉浸式

使用kotlin实现沉浸式状态栏

沉浸式

对比上面两张照片后,沉浸式和非沉浸式状态栏的区别就出来了,当然沉浸式状态栏还有其他种类。比如像你在玩的时候,你如果没有在状态栏的位置下拉,状态栏是不会出来的,这种也是常用的沉浸式状态栏一种。

好,了解完沉浸式状态栏和非沉浸式状态栏的区别后,我们现在开始真正地去实现它。

首先,我们要先去判断我们的Android版本,如果是大于5.0,我们就适配我们的沉浸式状态栏。接着,我们需要获取我们最上层的View来进行操作,Android顶层的View是window,所以我们先获取window,然后去设置我们的systemUiVisibility为全屏且需要状态栏,当然别忘了设置statusBar为透明。代码如下:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //判断Android的版本是否大于5.0
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){

            //获取最上层的View进行操作
            window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    .or(View.SYSTEM_UI_FLAG_LAYOUT_STABLE)

            window.statusBarColor = Color.TRANSPARENT//透明
        }
    }
}

还有,我们需要在AndroidManifest文件下设置我们activity的主题为NoActionBar,代码如下:

  <activity android:name=".MainActivity"
            android:theme="@style/Theme.AppCompat.Light.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

最后贴一下我的XML布局文件的代码,方便小白阅读实现:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

  <LinearLayout
      android:background="@color/colorAccent"
      android:layout_height="match_parent"
      android:layout_width="match_parent"/>
>
</androidx.constraintlayout.widget.ConstraintLayout>

这样我们的沉浸式的状态栏就实现了,这是我们第一种实现方式,那么如果想实现游戏全屏沉浸式状态栏又该怎么样做呢?别急,我早有准备,我们其他代码不改,在我们的systemUiVisibility的设置项中参考以下代码,添加上去就能轻松实现。这个时候,我们的导航栏和状态栏都被隐藏了,只有在拉下的情况会出现,过一段时间又会自动地缩回去。

       window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    .or(View.SYSTEM_UI_FLAG_LAYOUT_STABLE)
                    .or(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION)
                    .or(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION)
                    .or(View.SYSTEM_UI_FLAG_FULLSCREEN)
                    .or(View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY)

这样我们的沉浸式状态栏就轻松地实现好了,如果有什么不对的地方,欢迎大家指出一起探讨哦!

未解决
您可能还需要
天天领红包,单单有红包
android用户登录界面设计(Android简单的登录界面代码)
android源码怎么运行(android项目实例源码)
7月1日起,中国入美邮件资费或暴涨1倍
2020性价比高的75寸电视推荐(这6款看你最喜欢哪一款)
好成绩
7天无理由退货运费谁出有运费险(教你淘宝运费险使用技巧)
出勤天数规则修改后,会影响之前的出勤天数吗
使用C1网络投屏时需要连接同一个WIFI吗?
如何取消账号申诉?
还没有开通授客学堂
app初期怎么推广有效,推广app的方法及经验分享
app初期上线该怎么做,谷歌应用商店刷排名方法
app创业要考虑的因素有哪些,最热创业app平台推荐
app创业步骤有哪些,最热创业app软件推荐
app内容运营是做什么的,内容运营岗位职责
app内容营销模式有哪些,做好营销推广的9大手段
app关键词排名怎么优化(分享app关键词优化方)
app关键词排名怎么优化(4种优化方法及注意事项)
app做广告怎么收费(app打广告的收费及3大流程)
app优化的内容及策略(最值推荐的5大策略)
app优化方案,快速提高app应用市场排名的五个方法
app付费推广渠道有哪些(常用的7种推广渠道)
app付费推广有哪些形式,五种app付费推广方法
app产品运营模式有哪些(附淘客app的4种运营模式)
app产品运营模式有哪些(浅谈这5大运营模式)
app产品设计的思路和方法(全面了解app产品设计)
app产品设计包括哪些方面(app产品设计最核心的5大方面)
app产品经理需要的技能(必须掌握的5项技能)
app产品经理做什么(必须具备的13个基本职责)
app产品经理主要做什么(最主要的6大工作职责)
正在加载...