.getMethod(“addAssetPath”, String.class);
addAssetPath.invoke(assetManager, dexPath_tmp);
// 得到资源实例
Resources superRes = mContext.getResources();
// 实例化皮肤资源
Resources skinResource = new Resources(assetManager,
superRes.getDisplayMetrics(),
superRes.getConfiguration());
// 保存资源路径
SkinConfig.getInstance(mContext).setSkinResourcePath(
dexPath_tmp);
return skinResource;
}
} catch (Exception e) {
return null;
}
return null;
}
@Override
protected void onPostExecute(Resources result) {
super.onPostExecute(result);
mResources = result;
// 这里执行回调方法
if (callback != null) {
if (mResources != null) {
callback.loadSkinSuccess();
} else {
callback.loadSkinFail();
}
}
}
}.execute(dexPath);
}
public static interface loadSkinCallBack {
public void startloadSkin();
public void loadSkinSuccess();
public void loadSkinFail();
}
}
重点关注这个类,里面提供了一个异步方法对包和asset进行操作,这里用到了反射机制,反射调用addAssetPath来添加assets的路径,这个路径就是我们skin.apk的路径。具体细节,各位查看代码。
我们在Activity界面中使用上面提供的方法:
package com.devilwwj.skin;
import android.app.Activity;
import android.content.res.Resources;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android