安卓沉浸状态栏
2016-10-21 本文已影响464人
xiseven
使用安卓几年了,之前对安卓沉浸式状态栏很有好感,现在学习安卓开发就研究了一番,期间看了不是前辈的博客,学到不上东西,以下这篇博客就是学习加实践总结出来的。
沉浸式状态栏好像是从ios引进的,不过沉浸式的效果让软件更加精致,体验也会更好。
安卓从4.4开始引入透明状态栏,5.0之后推出Material Design设计风格,
安卓的沉浸状态栏也有了自己的风格,但这种带有阴影效果的风格可不是所有人都喜欢,
所以文章会实现不带阴影效果的沉浸状态栏
安卓4.4
4.4透明状态栏效果图4.4实现透明状态栏会是一种渐变的效果,看图
实现方式:
- 方式一:利用xml实现
在values-v19的style资源文件中找到系统应用的主题样式,在其中添加
<item name="android:windowTranslucentNavigation">true</item>
<item name="android:windowTranslucentStatus">true</item>
- 方式二
在activity的onCreate方法中加入
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
- 方式三
在activity的onCreate方法中加入
getWindow().getAttributes().flags = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
| WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION;
注意:以上凡是带有Navigation的代码都是作用于导航栏的(使导航栏透明),如不需要可删除
以上三种方式任选一种即可得到上图的透明状态栏效果
安卓4.4以上
带阴影效果 没有阴影效果4.4之后的透明状态栏有两种呈现形式,即带阴影效果和不带阴影效果,话不多少上图
实现带阴影效果的方式:其实和4.4是相同的
- 方式一:利用xml实现
在values-v19的style资源文件中找到系统应用的主题样式,在其中添加
<item name="android:windowTranslucentNavigation">true</item>
<item name="android:windowTranslucentStatus">true</item>
- 方式二
在activity的onCreate方法中加入
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
- 方式三
在activity的onCreate方法中加入
getWindow().getAttributes().flags = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
| WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION;
实现不带阴影效果的方式:
- 在activity的onCreate方法中加入
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION );
getWindow().setStatusBarColor(Color.TRANSPARENT);
getWindow().setNavigationBarColor(Color.TRANSPARENT);
注意:以上凡是带有Navigation的代码都是作用于导航栏的(使导航栏透明),如不需要可删除
顺带提一下
android:fitsSystemWindows="true"的效果使用android:fitsSystemWindows="true"时组件不会填充到状态栏和导航栏,如下图
默认为false,即上面所有截图的效果
结语
第一次写博客,希望记录所学,一步一步充实自己。
以上的代码经过测试,如有问题欢迎指正,谢谢。
如果各位有什么好的建议或实现方法,也可以共同交流,