使用 Android-skin-support实现换肤功能,效果图如下:
实现过程:
1.在build.gradle中导入相关依赖
implementation 'skin.support:skin-support:3.1.0-beta1' // skin-support 基础控件支持
implementation 'skin.support:skin-support-design:3.1.0-beta1' // skin-support-design material design 控件支持[可选]
implementation 'skin.support:skin-support-cardview:3.1.0-beta1' // skin-support-cardview CardView 控件支持[可选]
implementation 'skin.support:skin-support-constraint-layout:3.1.0-beta1' // skin-support-constraint-layout ConstraintLayout 控件支持[可选]
2.将原来布局中的颜色使用xml方式进行替换,如
android:background="@color/text_background"
<color name="text_background">#ffffffff</color>
3.新建Module文件,名称为night,如下图所示:
image.png
image.png
4.在新建好的skin-night中,替换你要更改的颜色
<color name="text_background">#363535</color>
5.在Terminal中进行打包
image.png
打包命令为:
gradlew :night:assembleDebug
打包后的apk路径为:
image.png
6.将文件后缀改为.skin,放入main/assets/skins/night.skin目录中
image.png
7.在项目中新建SkinApplication
public class SkinApplication extends Application{
@Override
public void onCreate() {
super.onCreate();
SkinCompatManager.withoutActivity(this) // 基础控件换肤初始化
.addInflater(new SkinMaterialViewInflater()) // material design 控件换肤初始化[可选]
.addInflater(new SkinConstraintViewInflater()) // ConstraintLayout 控件换肤初始化[可选]
.addInflater(new SkinCardViewInflater()) // CardView v7 控件换肤初始化[可选]
.setSkinStatusBarColorEnable(false) // 关闭状态栏换肤,默认打开[可选]
.setSkinWindowBackgroundEnable(false) // 关闭windowBackground换肤,默认打开[可选]
.loadSkin();
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
}
8.引入皮肤包即可实现换肤功能
SkinCompatManager.getInstance().loadSkin("night.skin", SkinCompatManager.SKIN_LOADER_STRATEGY_ASSETS);
网友评论