android 透明栏,Android状态栏透明(沉浸式效果)

Android状态栏透明(沉浸式效果)

默认效果

6d398c6e2f4347b7302a54c0bba76011.png

沉浸式效果

9970e9a62bdec523eacff0faba508c9e.png

方式一

源码

1. 修改状态栏和导航栏的属性为透明

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {

//透明状态栏

getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

//透明导航栏

getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);

}

效果图,发现顶部和底部都透明了,View占据了整个屏的位置,而TitleBar的位置并没有动

8fa8a84ec21c3181bf7e25f9336b3730.png

2. 让显示的View保持自身大小

在View的XML的根节点上添加属性

android:clipToPadding="true"

android:fitsSystemWindows="true"

效果图

a12e14bdd7723ee796a4eadc9f3a5cf3.png

3. 隐藏TitleBar

修改application主题

android:theme="@android:style/Theme.Black.NoTitleBar"

效果图

5637f68caa78592cd8d0a300b29cb34f.png

测试Toast走形

看帖子有人说这种方式Toast会走形,我测试了一下,没有走形。

f2f703fb2ca0d40821c6b2e51a756e7c.png

方式二

源码

1. 修改主题

修改application的主题

android:theme="@android:style/Theme.DeviceDefault.Light.NoActionBar.TranslucentDecor"

android:theme="@android:style/Theme.Holo.Light.NoActionBar.TranslucentDecor"

android:theme="@android:style/Theme.Holo.NoActionBar.TranslucentDecor"

效果图

7b8ce5578fb55729afcc3ca6b3e14691.png

2. 让显示的View保持自身大小

在View的XML的根节点上添加属性

android:clipToPadding="true"

android:fitsSystemWindows="true"

效果图

a6c6f5dd8ef8c70f9a1ba458204647e2.png