Step 1. Add the JitPack repository to your build file
Add it in your root settings.gradle at the end of repositories:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
mavenCentral()
maven { url 'https://jitpack.io' }
}
}
Add it in your settings.gradle.kts at the end of repositories:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
mavenCentral()
maven { url = uri("https://jitpack.io") }
}
}
Add to pom.xml
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
Add it in your build.sbt at the end of resolvers:
resolvers += "jitpack" at "https://jitpack.io"
Add it in your project.clj at the end of repositories:
:repositories [["jitpack" "https://jitpack.io"]]
Step 2. Add the dependency
dependencies {
implementation 'com.github.AriesHoo:Android-skin-support:v1.2.0-design-v1.2.0-cardview-v1.2.0-release'
}
dependencies {
implementation("com.github.AriesHoo:Android-skin-support:v1.2.0-design-v1.2.0-cardview-v1.2.0-release")
}
<dependency>
<groupId>com.github.AriesHoo</groupId>
<artifactId>Android-skin-support</artifactId>
<version>v1.2.0-design-v1.2.0-cardview-v1.2.0-release</version>
</dependency>
libraryDependencies += "com.github.AriesHoo" % "Android-skin-support" % "v1.2.0-design-v1.2.0-cardview-v1.2.0-release"
:dependencies [[com.github.AriesHoo/Android-skin-support "v1.2.0-design-v1.2.0-cardview-v1.2.0-release"]]
Android-skin-support: 一款用心去做的Android 换肤框架, 极低的学习成本, 极好的用户体验.
只需要一行代码, 就可以实现换肤, 你值得拥有!!!
SkinCompatManager.withoutActivity(this).loadSkin();
就这么简单, 你的APK已经拥有了强大的换肤功能, 当然现在是拥有了换肤功能, 别忘了制作皮肤包.
skin-app // 换肤demo app
skin-night // 换肤demo 夜间模式
skin-support // 换肤框架, 基础控件支持
skin-support-design // 换肤框架, Material Design 支持
直接添加依赖, 最新版本选择, 请查看更新日志
compile 'skin.support:skin-support:2.0.3' // skin-support 基础控件支持
compile 'skin.support:skin-support-design:1.2.4' // skin-support-design material design 控件支持[可选]
compile 'skin.support:skin-support-cardview:1.2.0' // skin-support-cardview CardView 控件支持[可选]
compile 'skin.support:skin-support-constraint-layout:1.0.2' // skin-support-constraint-layout ConstraintLayout 控件支持[可选]
@Override
public void onCreate() {
super.onCreate();
SkinCompatManager.withoutActivity(this) // 基础控件换肤初始化
.addInflater(new SkinMaterialViewInflater()) // material design 控件换肤初始化[可选]
.addInflater(new SkinConstraintViewInflater()) // ConstraintLayout 控件换肤初始化[可选]
.addInflater(new SkinCardViewInflater()) // CardView v7 控件换肤初始化[可选]
.loadSkin();
}
如果项目中有特殊需求。例如, 股票控件: 控件颜色始终为红色或绿色, 不需要随着模式切换而换肤
那么可以使用类似的方法, 直接设置color值
setTextColor(0xce3d3a) // 不支持换肤
textColor="#ce3d3a"
而不是使用R.color.red
setTextColor(R.color.red)
textColor="@color/red"
// 指定皮肤插件
SkinCompatManager.getInstance().loadSkin("new.skin"[, SkinLoaderListener]);
// 恢复应用默认皮肤
SkinCompatManager.getInstance().restoreDefaultTheme();
要点:
实现SkinCompatSupportable接口
在构造方法中解析出需要换肤的resId
自定义View可以直接继承自SkinCompatView, SkinCompatLinearLayout等已有控件
eg: CustomTextView
不想继承自已有控件
eg: CustomTextView2
需要换肤自定义属性
// 需要换肤AutoCompleteTextView的R.attr.popupBackground属性
需要使用第三方库控件怎么办
// 需要使用https://github.com/hdodenhof/CircleImageView 控件, 并且要支持换肤
皮肤工程包名不能和宿主应用包名相同.
例如:
宿主包名: com.ximsfei.skindemo
夜间模式: com.ximsfei.skindemo.night
例如 APK中窗口背景颜色为
colors.xml
<color name="background">#ffffff</color>
那么夜间模式你可以在skin-night工程中设置
colors.xml
<color name="background">#000000</color>
将打包生成的apk文件, 重命名为'xxx.skin', 防止apk结尾的文件造成混淆.