Android换肤, 基于插件式的资源切换方案
#特点
- 插件换肤
- 浸入性低
- 支持重启或者不重启Activity
#缺陷
- 已创建的Activity自动替换资源不支持如下操作:
- 在代码中动态设置View的background, ImageView的src, TextView的textColor, drawableLeft等
- 在代码中通过new View()生成的视图
- 不支持layout资源切换, 即layout资源只会使用app内自带的资源文件
- 不支持drawable中xml类型资源的切换, 不同版本间同一个xml文件不得修改
- 不支持padding, margin, textSize等类型的资源切换
- 获取LayoutInflater必须使用Activity.getLayoutInflater
#使用方法 ##集成
-
添加依赖文件:
dependencies {
compile 'com.cantalou:android-skin-change:1+@aar'
} -
代码集成的两种方式:
2.1 在BaseActivity(项目所有Activity的父类)或者所有的Activity的中添加如下代码:
@Override
protected void onCreate() {
SkinManager.getInstance().onAttach(this);
super.onCreate();
}@Override
protected void onDestroy() {
SkinManager.getInstance().onDestroy(this);
super.onDestroy();
}2.2 在自定义的Application的onCreate中添加如下代码:
SkinManager.getInstance().initByReplaceInstrumentation(this);
3.使用方式
SkinManager.getInstance().changeResources(activityInsatance, "/filepath/red.apk");
#效果
#实现原理
通过替换Activity的mResources和mTheme两个属性
http://blog.csdn.net/cantalou/article/details/49708469