基于Android-Skin-Loader实现换肤效果

  

skin-loader框架的换肤是通过插件化的形式替换资源文件,实现换肤效果好。处是可以在线更新皮肤换肤

  

android-skin-loader源码   

<强>演示样例

  

基于Android-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实现换肤效果