<1>修改系统的色调
在设置的主题中添加:
<!-- 更改首页图标颜色 -->
<item name="android:colorAccent">#ff6900</item>
这样只是修改掉Setting内部的颜色,一些链接到系统其他应用的颜色没有改变
还需要在源码的framework/base/core/res/res/values/ 目录下,修改对应的主题颜色,我这使用的是material主题:themes_material.xml
可以看到主题中
dark主题
<item name="colorAccent">@color/accent_material_dark</item>
light主题
<item name="colorAccent">@color/accent_material_light</item>
再去对应的color_material.xml 文件中查找,修改对应的颜色
修改framework res需要重新编译framework res模块:
编译framework res部分
1.初始化环境 : . ./build/envsetup.sh
2.选择模块: lunch
3.编译res: make framework-res
4.将编译好的模块推到机器:adb remount && adb push ./out/…/framework-res.apk /system/framework/framework-res.apk
5.重启系统 adb reboot
注意:我使用的是本地eng版本才有权限,push
<2>修改系统的Switch的风格
1.首先在主题中添加:
<!-- For SwitchPreference SwitchBar -->
<item name="@*android:switchStyle">@style/customSwitchStyle</item>
再在style中添加自定义switchStyle:
<style name="customSwitchStyle" parent="@*android:style/Widget.Material.CompoundButton.Switch">
<item name="android:track">@drawable/switch_track</item>
<item name="android:thumb">@drawable/switch_thumb</item>
<item name="android:textOn">""</item>
<item name="android:textOff">""</item>
<item name="android:switchMinWidth">0dip</item>
</style>
对应的资源文件:
switch_track.png
switch_thumb.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/switch_disable" android:state_enabled="false"/>
<item android:drawable="@drawable/switch_on" android:state_checked="true"></item>
<item android:drawable="@drawable/switch_off"></item>
</selector>
switch_disable.png switch_on.png switch_off.png :
同样需要修改系统个framework中源码res:
在material主题中将switchStyle属性修改为上面自定义的风格,将资源放在对应的drawable中
编译framework-res ……等就修改啦控件switch的默认风格
修改其他控件一样
<3>像上面修改后发现还有一些系统的ui没有改变颜色
这就需要修改SystemUI中的颜色,在res中的color文件中修改颜色
如果不知道对应是那个颜色,只有去style中去看对应的应用或者直接在color中查找之前改的颜色,直接替换
编译SystemUI