android 插件式皮肤 将皮肤包,Android-skin-support

仲和韵
2023-12-01

只需要两行代码, 就可以实现换肤, 你值得拥有!!!

第一行: 在Application的onCreate中初始化SkinCompatManager.init(this).loadSkin();

第二行: 继承自SkinCompatActivitypublic class BaseActivity extends SkinCompatActivity {}

就这么简单, 你的APK已经拥有了强大的换肤功能.

skin-app // 换肤demo app

skin-night // 换肤demo 夜间模式

skin-support // 换肤框架, 基础控件支持

skin-support-design // 换肤框架, Material Design 支持

目前支持:支持Android 4.x, 5.x, 6.x, 7.x

skin-support: 基础控件 支持View

Button

Spinner

SeekBar

CheckBox

EditText

TextView

RatingBar

ImageView

ProgressBar

ImageButton

RadioButton

FrameLayout

LinearLayout

RelativeLayout

CheckedTextView

AutoCompleteTextView

MultiAutoCompleteTextView

android.support.v7.widget.Toolbar

skin-support-design: material design 支持TabLayout

AppBarLayout

NavigationView

导入:git clone https://github.com/ximsfei/Android-skin-support.git

选择需要的module依赖:// aar

dependencies {

compile(name: 'skin-support-release', ext: 'aar') // Android 基础控件, 及V7包中的一些控件

compile(name: 'skin-support-design-release', ext: 'aar') // Android support design包中的一些控件

}

或者dependencies {

compile project(':skin-support')

compile project(':skin-support-design')

}

或者// 可以打开调试日志

dependencies {

releaseCompile project(path: ':skin-support', configuration: 'release')

debugCompile project(path: ':skin-support', configuration: 'debug')

releaseCompile project(path: ':skin-support-design', configuration: 'release')

debugCompile project(path: ':skin-support-design', configuration: 'debug')

}

初始化:

在Application的onCreate中初始化@Override

public void onCreate() {

super.onCreate();

SkinCompatManager.init(this).loadSkin(); // 应用启动加载当前(保存在SharedPreferences中)皮肤库

}

继承SkinCompatActivity

让所有需要换肤的Activity继承自skin.support.app.SkinCompatActivity.public class BaseActivity extends SkinCompatActivity {}

加载插件皮肤库// 指定皮肤插件, 并且监听加载状态

SkinCompatManager.getInstance().loadSkin("new.skin");

// 恢复应用默认皮肤

SkinCompatManager.getInstance().restoreDefaultTheme();

自定义View换肤

要点:实现SkinCompatSupportable接口

在构造方法中解析出需要换肤的resId

在applySkin方法中实现换肤自定义View可以直接继承自SkinCompatView, SkinCompatLinearLayout等已有控件

需要换肤自定义属性

// 需要换肤AutoCompleteTextView的R.attr.popupBackground属性

制作皮肤插件:

新建Android application工程

将需要换肤的资源放到res目录下(同名资源)

打包生成apk, 即为皮肤包

最佳实践

 类似资料: