日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android之基于AssetManager实现换肤方案

發布時間:2025/3/15 Android 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android之基于AssetManager实现换肤方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
AssetManager的addAssetPath負責將另一個apk的資源文件加載進當前應用,這里由于是api隱藏方法,采用反射方式調用。
查看addAssetPath方法注釋,允許傳遞的路徑為資源目錄或者zip文件。/**
* Add an additional set of assets to the asset manager. This can be
* either a directory or ZIP file. Not for use by applications. Returns
* the cookie of the added asset, or 0 on failure.
* {@hide}
*/通過實例化的AssetManager對象,生成插件包對應的Resources對象,拿到該對象即可操作插件包的相關資源文件。private Resources pluginRes;//插件Resource對象
private String pluginApkPackageName;//插件Apk的包名

public ResPluginOnAssetManagerPattern initManager(Context curContext, String pluginApkPath) throws IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException, PackageManager.NameNotFoundException, ClassNotFoundException {
AssetManager assetManager = AssetManager.class.newInstance();
Method addAssetPath = assetManager.getClass().getMethod("addAssetPath", String.class);
addAssetPath.invoke(assetManager, pluginApkPath);

Resources curAppRes = curContext.getResources();
pluginRes = new Resources(assetManager, curAppRes.getDisplayMetrics(), curAppRes.getConfiguration());
pluginApkPackageName = UtilsSystem.getPackageNameThroughApkPath(curContext, pluginApkPath);
return this;
}想要獲取插件包的資源,可以通過以下方式引用(這里僅給出string以及drawable的調用方式,其他資源類似):/**
* 獲取ResID
*
* @param resName
* @param resType
* @return
*/
private int getResId(String resName, String resType) {
if (pluginRes != null && !UtilsString.isEmptyBaseTrim(pluginApkPackageName)) {
return pluginRes.getIdentifier(resName, resType, pluginApkPackageName);
}
return -1;
}

@Override
public String getString(String resName) {
return pluginRes.getString(getResId(resName, "string"));
}

@Override
public Drawable getDrawable(String resName) {
return pluginRes.getDrawable(getResId(resName, "drawable"));
}
源碼地址:https://github.com/xiaoxuan948/AndroidUnityLab/tree/master/unity_base_dev_helper/src/main/java/com/coca/unity_base_dev_helper/plugin


來自為知筆記(Wiz)

轉載于:https://www.cnblogs.com/linux007/p/5806308.html

總結

以上是生活随笔為你收集整理的Android之基于AssetManager实现换肤方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 高h捆绑拘束调教小说 | 欧美久久一区二区 | 妓院一钑片免看黄大片 | 久久性片| 日本伦理一区二区三区 | 黄网av| 国产人成在线观看 | 先锋资源在线视频 | 中文字幕无码精品亚洲资源网久久 | 欧美成人精品一区二区综合免费 | 色女人av| 看av免费毛片手机播放 | 午夜久久久久久久久久久 | 久热网| 里番精品3d一二三区 | 中文字幕有码视频 | 日本三级小视频 | 中国大陆一级片 | 影音先锋中文字幕一区 | 性欧美18一19内谢 | 国产一级二级av | 久久久久无码国产精品 | 国产精品videossex久久发布 | 在线视频中文字幕 | 办公室荡乳欲伦交换bd电影 | 99热在线看 | 国产白丝袜美女久久久久 | 国产成人精品无码播放 | 青青青操 | 深夜福利在线播放 | 亚洲一片 | 99精品综合| av一区二区三区免费观看 | 亚洲vs天堂| av看片资源| 精品美女在线观看 | 亚洲丝袜在线观看 | 亚洲AV不卡无码一区二区三区 | 仙踪林久久久久久久999 | 成人影片在线播放 | www.操操操| 成色视频| www.伊人| 波多野结衣导航 | 亚洲精品中文字幕乱码三区91 | 玖草视频在线观看 | 娇妻被老王脔到高潮失禁视频 | 日本高清不卡在线 | www日本com | 91精品国产高清 | 久久精品在线播放 | 日本精品黄| 国产精品综合久久 | 国产一区二区久久 | 在线播放黄色av | 久久国产激情 | 能看的av | 秘密基地动漫在线观看免费 | 五月天av在线 | 日韩视频一区二区在线观看 | 涩涩视频软件 | 欧美激情国产日韩精品一区18 | 亚洲精品国产精品乱码桃花 | 李丽珍毛片 | www.蜜桃av.com| 自拍偷拍亚洲欧美 | 国产精品久久伊人 | 国产av电影一区二区 | 欧美国产一区二区在线观看 | 亚洲AV成人无码久久精品巨臀 | 国内精品福利视频 | 天堂中文在线官网 | www.婷婷 | 岛国色图 | 国产激情精品一区二区三区 | 日韩欧美视频一区二区 | 欧美国产大片 | 少女与动物高清版在线观看 | 色五婷婷 | 国产欧美日韩精品一区二区三区 | 男人天堂资源 | 嫩模啪啪| 日韩av免费播放 | 国产精品男同 | 这里只有精品66 | 中文有码在线观看 | 色婷婷久久综合 | 国产精品无码免费播放 | 亚洲日本一区二区 | 亚洲第一免费播放区 | 手机在线视频一区 | 成人av网站在线播放 | 射黄视频| 人人看人人干 | 艳母免费在线观看 | 人人草人人射 | 黑花全肉高h湿play短篇 | 热99精品 | 亚洲毛片在线播放 |