Android-skin-support 换肤框架教程
项目地址:https://gitcode.com/gh_mirrors/an/Android-skin-support
项目介绍
Android-skin-support 是一个易于集成的 Android 动态换肤框架。它具有极低的学习成本和极好的用户体验,只需一行代码即可实现换肤功能。该框架支持应用内换肤和插件式换肤,能够满足不同场景下的换肤需求。
项目快速启动
1. 添加依赖
在项目的 build.gradle
文件中添加以下依赖:
implementation 'skin.support:skin-support:4.0.5' // skin-support 基础控件支持
implementation 'skin.support:skin-support-appcompat:4.0.5' // skin-support-appcompat 基础控件支持
implementation 'skin.support:skin-support-design:4.0.5' // skin-support-design material design 控件支持[可选]
implementation 'skin.support:skin-support-cardview:4.0.5' // skin-support-cardview CardView 控件支持[可选]
implementation 'skin.support:skin-support-constraint-layout:4.0.5' // skin-support-constraint-layout ConstraintLayout 控件支持[可选]
2. 初始化框架
在 Application
的 onCreate
方法中初始化换肤框架:
import skin.support.SkinCompatManager;
import skin.support.app.SkinAppCompatViewInflater;
import skin.support.app.SkinCardViewInflater;
import skin.support.design.app.SkinMaterialViewInflater;
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
SkinCompatManager.withoutActivity(this)
.addInflater(new SkinAppCompatViewInflater()) // 基础控件换肤初始化
.addInflater(new SkinMaterialViewInflater()) // material design 控件换肤初始化[可选]
.addInflater(new SkinCardViewInflater()) // CardView 控件换肤初始化[可选]
.setSkinStatusBarColorEnable(false) // 关闭状态栏换肤,默认打开[可选]
.setSkinWindowBackgroundEnable(false) // 关闭WindowBackground换肤,默认打开[可选]
.loadSkin();
}
}
3. 使用换肤功能
在需要换肤的 Activity 中,调用 SkinCompatManager
的 loadSkin
方法进行换肤:
SkinCompatManager.getInstance().loadSkin("night", new SkinCompatManager.SkinLoaderListener() {
@Override
public void onStart() {
// 换肤开始
}
@Override
public void onSuccess() {
// 换肤成功
}
@Override
public void onFailed(String errMsg) {
// 换肤失败
}
});
应用案例和最佳实践
应用内换肤
应用内换肤是指将白天和夜间两套资源文件根据一定的命名规则放在同一个项目资源文件夹中,通过切换资源文件实现换肤。例如,将夜间模式的资源文件命名为 night_
前缀,然后在代码中调用 loadSkin("night")
即可切换到夜间模式。
插件式换肤
插件式换肤使用自制的皮肤包完成换肤功能。这个皮肤包可以打包进项目,也可以存放在设备的指定路径上。通过加载皮肤包中的资源文件实现换肤。例如,将皮肤包放在 sdcard
的 skins
目录下,然后在代码中调用 loadSkin("sdcard/skins/night.skin")
即可加载并应用皮肤包。
典型生态项目
skin-support
skin-support
是换肤框架的基础控件支持库,提供了对基础控件的换肤支持。
skin-support-design
skin-support-design
提供了对 Material Design 控件的换肤支持,包括 TextInputLayout
、FloatingActionButton
等。
skin-support-cardview
skin-support-cardview
提供了对 CardView
控件的换肤支持。
skin-support-constraint-layout
skin-support-constraint-layout
提供了对 `Constraint
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考