android状态栏透明代码(android设置状态栏颜色)

对于Android来说什么是沉浸式状态栏?给个图你对比看就懂了:android状态栏透明代码(android设置状态栏颜色)-1

非沉浸式android状态栏透明代码(android设置状态栏颜色)-2

沉浸式

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

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

首先,我们要先去判断我们的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)

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

秒鲨号所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈!本站将在三个工作日内改正。
(0)

大家都在看

品牌推广 在线咨询
返回顶部