识别MIUI和FLyme系统
目前只看到了小米和魅族公开了各自的实现方法,支持底层Android4.4以上的版本。而Android官方在6.0版本才有了深色状态栏字体API。所以Android4.4以上系统版本可以修改状态栏颜色,但是只有小米的MIUI、魅族的Flyme和Android6.0以上系统可以把状态栏文字和图标换成深色。
我们首先要了解如何识别手机系统。
这篇文章告诉我们如何判断手机系统
整理出判断MIUI,FLyme系统的方法为
1 | public class OSUtils { |
设置状态栏透明
综合上一篇文章,我们知道Android4.4.+ ,API 19 以上可以设置状态栏透明,且 4.4 和 5.0 方式不同
1 | /** |
我们设置的主题为NoActionBar,除此之外没添加别的元素。
这里我给button添加了颜色,可以看到button顶到了状态栏。
添加状态栏高度
1 | public int getStatusBarHeight() { |
魅族字体设置方式
1 | public void setFlymeUI(boolean dark) { |
小米字体设置方式
1 | public void setMiuiUI(boolean dark) { |
Android 6.0 以上设置方式
1 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { |
实现方式
这里介绍实现方式的一种,通过自定义基类的Activity,让所有要实现的Activity继承它。
我们的基类布局设置的方式为:状态栏+内容实现布局。
因此在实现过程中我们要将子类布局添加到我们的内容实现布局中,还要将状态栏设置为透明。
1 | <?xml version="1.0" encoding="utf-8"?> |
总的实现方法为,下面是全部代码(要耐心看)
1 | import android.graphics.Color; |
状态栏默认为主题颜色。可以根据需要设置状态栏的颜色,字体是否显示为黑色。
实现代码为:
1 | public class MainActivity extends CompactActivity { |
下一篇,我会介绍另一种实现方式。
参考文章
https://www.jianshu.com/p/a44c119d6ef7
http://yifeng.studio/2017/02/19/android-statusbar/