skin-loader框架的换肤是通过插件化的形式替换资源文件,实现换肤效果好。处是可以在线更新皮肤换肤
android-skin-loader源码
<强>演示样例强>
<>强流程强>
整个框架大概的流程是加载皮肤包,找到被标记的控件,通过自定义的工厂工程过滤掉其他控件,使用皮肤包中的资源文件更新被标记的ui。
<强>使用操作强>
1,导入android-skin-loader框架包
androidStudio文件→新建→导入模块选择android-skin-loader
项目右键→打开模块设置→应用中加载依赖android-skin-loader库
2,在MyApplication初始化框架
.init SkinManager.getInstance () (); .load SkinManager.getInstance () ();
3,需要换肤的活动需要继承skin-loader中的BaseActivity
需要换肤的控件添加皮肤:启用=" true ",控件xml添加命名空间xmlns:皮肤=" http://schemas.android.com/android/skin "
4,准备需要替换的颜色或可拉的同名的资源文件包将其打包,重命名以。皮肤结尾
本地测试可以使用亚行命令将。皮肤包放在sdcard
亚行推文件目录/测试。皮肤/sdcard
<强>样例代码强>
xml文件,使用数据绑定,不知道的自行百度
& lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比; & lt;布局xmlns: android=" http://schemas.android.com/apk/res/android " xmlns:皮肤=" http://schemas.android.com/android/skin "比; LinearLayout & lt; android: layout_width=" match_parent " android: layout_height=" match_parent " 面向android:=按怪薄北? LinearLayout & lt; android: layout_width=" match_parent " android: layout_height=" wrap_content " 面向android:="水平"比; & lt;按钮 android: id=癅 + id/btn_default” android: layout_width=" wrap_content " android: layout_height=" wrap_content " android:输入textColor=" @color/text_color” android:背景=" @color/button_background” 皮肤:启用=" true " android:文本="默认皮肤”/比; & lt;按钮 android: id=癅 + id/btn_change_skin” android: layout_width=" wrap_content " android: layout_height=" wrap_content " android: layout_marginLeft=" 20 dp” android:输入textColor=" @color/text_color” android:背景=" @color/button_background” 皮肤:启用=" true " android:文本="更改皮肤”/比; & lt;按钮 android: id=癅 + id/btn_add” android: layout_width=" wrap_content " android: layout_height=" wrap_content " android: layout_marginLeft=" 20 dp” android:输入textColor=" @color/text_color” android:背景=" @color/button_background” 皮肤:启用=" true " android:文本="动态添加布局”/比; & lt;/LinearLayout> & lt; TextView android: layout_width=" match_parent " android: layout_height=" wrap_content " android:输入textColor=" @color/text_color” android:文本="文字文字文字文字文字文字” 皮肤:启用=" true "/比; & lt; ImageView android: layout_width=" wrap_content " android: layout_height=" wrap_content " android: src=" https://www.yisu.com/zixun/@drawable/皮肤” 皮肤:启用=" true "/比; LinearLayout & lt; android: id=癅 + id/add_layout” android: layout_width=" match_parent " android: layout_height=" wrap_content " 皮肤:启用=" true " 面向android:=按怪薄北? & lt;/LinearLayout> & lt;/LinearLayout> & lt;/layout>
公开课SkinChangeAct延伸BaseActivity { 私人ActivitySkinchangeBinding绑定;//皮肤包名 私人字符串SKIN_NAME=皌est.skin”;//皮肤皮肤包的路径 私人字符串SKIN_DIR=Environment.getExternalStorageDirectory () + File.separator + SKIN_NAME; @Override 公共空间> & lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比; & lt; resources> & lt;颜色名称=" colorPrimary "祝辞# 3 f51b5 & lt;颜色名称=" colorPrimaryDark "祝辞# 303 f9f & lt;颜色名称=" colorAccent "祝辞# FF4081基于Android-Skin-Loader实现换肤效果