经常有看到某些应用设置主题颜色比如:
这个是如何实现的呢?思考一下,这个状态栏的颜色取值于系统预设的三个基本色ColorPrimary,我们修改这个可以改状态栏的颜色,但是想要动态的随心所欲就不太现实了。
我想到的方法是,自定义系统状态栏,和titlebar然后自己就可以随心所欲了。
步骤:
- 设置全局Theme为NotitleBar类型的Theme
- 获取状态栏高度(顺便获取下底部菜单栏高度,部分机型有,比如华为部分机型)
- 自定义全局Application,设置color 的SharedPreference
- 设置BaseActivity设置目标颜色即可
- Activity继承BaseActivtiy然后就有预设的颜色了,然后设置主题色的功能就是修改SharedPreference即可
部分实现代码:
1.Theme设置
这个两个两个属性是我设置的解决系统启动白屏的背景图和关闭Activity的动画,可有可无。根据需要自己设置一下就是。
<style name="MyTranslucentTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@mipmap/img_splash_bg</item>
<item name="android:windowAnimationStyle">@anim/slide_out_right</item>
</style>
AndroidManiFest.xml引用