Android_切换主题或皮肤的实现方式

1.简介

使用自定义主题或者皮肤,可以将相关配置(颜色、大小等等)放在一个新的apk压缩文件中,目录结构保持一致,该apk文件放在任意可以访问到的目录即可,类似/system/framework/framework-res.apk,可根据软件的需要动态的加载主题文件。这里只介绍这一种实现方式,别的方式有兴趣的可以自己研究。主要实例化AssetManager对象和Resources对象来实现的

AssetManager assetManager = AssetManager.class.newInstance();
Method addAssetPath = assetManager.getClass().getMethod("addAssetPath", String.class);
addAssetPath.invoke(assetManager, skinPkgPath);

Resources superRes = context.getResources();
Resources skinResource = new Resources(assetManager,superRes.getDisplayMetrics(),superRes.getConfiguration());


2.流程图

Android_切换主题或皮肤的实现方式_第1张图片

Android_切换主题或皮肤的实现方式_第2张图片

Android_切换主题或皮肤的实现方式_第3张图片


3. 备注

github上就有一个不错的开源项目https://github.com/fengjundev/Android-Skin-Loader,有兴趣的朋友可以研究下源码

你可能感兴趣的:(android,apk,主题)