# skinDemo **Repository Path**: code_tjf/skin-demo ## Basic Information - **Project Name**: skinDemo - **Description**: 根据Android-skin-support换肤框架 编写的一个测试demo 及进行了简单的封装使用 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-11-12 - **Last Updated**: 2022-12-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # skinDemo #### 介绍 换肤框架的测试及编写的一个demo ``` 练习于 该换肤框架 Android-skin-support 主要研究的是应用内换肤 和自定义View 下如何实现换肤 ``` #### 软件架构 ``` app demo 的测试主app theme_skins 插件式换肤生成的皮肤包 skin-support-design 倚赖换肤基本库及其他 第三方库 skin_widget 测试的几个自定义View 进行的换肤 ``` #### 1. SkinApiManager的基本使用说明 1. 换肤的初始化 ``` 这个一般放在Application 中进行初始化 SkinApiManager.init(this); 继承AppCompatActivity 的需要 在activity里 重写其委托方法 如有baseActivity 可放在base 里 @NonNull @Override public AppCompatDelegate getDelegate() { return SkinApiManager.getDelegate(this, this); } ``` 2. 获得当前的皮肤包名称 ``` SkinApiManager.getSkinName(); ``` 3. 默认的主题 ``` SkinApiManager.defultTheme(); ``` 4. 多套res_x 换肤方式 加载皮肤包 应用内换肤 ``` 应用内换肤 各个换肤xml和drawable color 等多套res_x下记得前后缀的方式命名默认的资源文件名,防止无法编译冲突。 /** * 多套res下的加载皮肤包 * * @param skinName 皮肤包名称 * @param listener 回调 * @param strategy 换肤的方式 */ SkinApiManager.loadSkinFrom(String skinName, SkinLoaderListener listener, int strategy); ``` 5. Assets下的皮肤加载 ``` /** * Assets下的皮肤加载 在 res 同级下新建assets/skins/ 路径 * * @param skinName 皮肤包名称 * @param listener 回调 */ SkinApiManager.loadSkinFromAssets(String skinName, SkinLoaderListener listener) ``` 6. 自定义的SD卡下的皮肤加载 ``` /** * 自定义的SD卡下的皮肤加载 记得 给予 读写权限 路径是 /storage/emulated/0/skins/skin_night.skin *
*