使用了github上开源库ChangeSkin,原作者hongyang.
开源库地址:ChangeSkin
注意事项
1.让所有需要换肤的界面的Activity继承framework层中base包下BaseChangeSkinActivity
2.对于需要换肤的资源命名使用skin开头
比如某个控件的
背景需要换肤:
字体颜色:
3.应用内换肤,应用内有多套资源。
比如背景图叫做:skin_main_bg 可以准备一套皮肤资源,命名为skin_main_bg_后缀
后缀名根据换肤风格统一定义,比如绿色风格“skin_main_bg_green”.同理控件的字体颜色
普通风格是“skin_item_text_color”绿色风格为“skin_item_text_color_green”
4.插件式换肤
准备资源apk,按相同规则定义下资源名称。仅仅是普通的项目,准备需要包含用到的资源即可。
5.调用换肤API
应用内换肤直接调用BaseChangeSkinActivity的setSkinStyle方法即可。此处前两个参数是控制
状态栏颜色的参数,到时具体看需求,需要什么颜色值在传入即可。
插件式换肤直接调用BaseChangeSkinActivity的setSkinStyleWithSDCard方法即可记得传入
对应的apk资源路径和资源包名即可。
设置回默认皮肤直接调用BaseChangeSkinActivity的setDefaultSkin()传入参数为true即可
6.Toolbar兼容适配问题
解决思路在ToolBar中自定义需要的布局,自定义布局中的控件资源命名方式在上述规则来即可
记得设置contentInsetLeft和contentInsetStat 的值为0保证自定义布局铺满Toolbar.
因为没有接到项目中,如有其他问题具体讨论。附带可能出现的问题参考连接