随着安卓4.4的发布,再也不用看到那些黑黑的状态栏了,状态栏也可以实现透明和自定义颜色了,学会状态栏透明确实会让你的APP好看不少。因为谁能忍受那些大黑边 。加上5.0md的发布,灵活使用状态栏配色可以表达各式各样的主题心情,所以就是一句话,状态栏配色虽然细小但是却显得十分重要了。
转载自zhangphil大神的博客,转载我就注明原文链接---http://blog.csdn.net/zhangphil;
原本有三篇文章,我就融合了下当一篇文章发布了。希望读后能有所启发吧。
老规矩,来句名言点缀下-------
——— 亚里士多德
一:用style样式实现透明状态栏
(1) 我的例子中,Androidmanifest.xml文件中定义的app的style为AppTheme:
上面的Androidmanifest.xml是Android Studio自动生成的,同时Android Studio自动在res/values目录下生成的styles.xml文件中定义了AppTheme,我把这个AppTheme重新修改为:
(2)再为Android v19准备一套styles.xml文件。在res/目录下新建一个名为values-v19目录,在res/values-v21目录下再建一个styles.xml文件,注意名字和AppTheme相同:
(3)写一个简单的MainActivity.Java测试,MainActivity.java代码(特别注意!本例的MainActivity继承自Activity而不是AppCompatActivity,如果继承自AppCompatActivity,显示结果达不到本例结果):
MainActivity.java加载的activity_main.xml代码:
代码运行结果:
TextView跑到顶部状态栏下面去了,这显然不合适,在activity_main.xml代码中增加android:fitsSystemWindows="true" :
代码运行结果:
显示就正常了。
二:使用代码实现状态栏透明
附录1以xml写style实现了Android沉浸式(侵入式)状态栏(标题栏),同样以上层Java代码实现。
在附录文章1的基础上,本例仅仅只是删掉res目录下的全部values-v21目录所有资源文件,仅保留values下一个styles.xml文件定义的AppTheme:
但是和附录文章1比较,在MainActivity增加Java代码:
MainActivity需要的activity_main.xml和附录文章1相同:
代码运行结果:
三,实现全部透明,在5.0以上会出现有底色覆盖
从附录文章1,2可以看到,依靠Android系统提供的标准方案,状态栏即便在透明状态下,仍然有些半透明而不是全透明。本文是Android沉浸式状态栏解决方案的第三种,以Java代码实现,参考附录文章2,本文保持附录文章2的styles.xml不变,仅仅只做上层Java代码的调整,实现沉浸式状态栏全透明或者动态设置颜色,测试的MainActivity.java:
MainActivity.java需要的activity_main.xml文件:
代码运行结果:
注意:
1,本文的解决方案不在受限于MainActivity继承自标准Activity,可以继承自AppCompatActivity,但是如果MainActivity继承自AppCompatActivity,那么必须把styles.xml文件的style修改为Theme.AppCompat.*****,否则代码将崩溃,比如可以修改styles中的AppTheme: