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

歡迎訪問 生活随笔!

生活随笔

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

Android

Android APK方式换肤实现原理

發布時間:2025/4/9 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android APK方式换肤实现原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

現在很多APP都有換膚的功能,例如微博,QQ等應用。這些應用的換膚原理是什么?

在用微博的時候,不難發現,當你要換膚時,先下載并安裝一個皮膚apk,然后選擇這個皮膚,就可以了。

這種方式就是把皮膚打包成一個APK,然后在主程序中訪問這個皮膚APK中的資源。這種方式需要涉及到兩個應用之間的數據訪問了。

那如何做到應用間的數據訪問呢?

這就得用到Android shareUserId這個屬性了。通過Shared User id,擁有同一個User id的多個APK可以配置成運行在同一個進程中.所以默認就是可以互相訪問任意數據.

假設有一個應用叫main,一個皮膚APK叫skin,那么在main應用以及skin應用中的manifest.xml文件中需要設置shareUserId屬性,都設置為cn.angrycode.main

在main應用的manifest.xml文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cn.angrycode.main"
android:versionCode="1"
android:versionName="1.0" android:sharedUserId="cn.angrycode.main">
<uses-sdk android:minSdkVersion="7" />

<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Main"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

</application>
</manifest> ??? ? 在skin應用中
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cn.angrycode.skin"
android:versionCode="1"
android:versionName="1.0" android:sharedUserId="cn.angrycode.main">
<uses-sdk android:minSdkVersion="7" />

<application android:icon="@drawable/icon" android:label="@string/app_name">

</application>
</manifest>

這樣在主應用中就可以通過代碼進行設置皮膚

Context ctx = createPackageContext("cn.angrycode.skin", Context.CONTEXT_IGNORE_SECURITY);
layout.setBackgroundDrawable(ctx.getResources().getDrawable(R.drawable.bg));

這里還需要注意的是,主程序main中的資源路徑以及資源名稱要與skin應用中的資源路徑以及資源名稱要一致。例如,main主程序中的資源是 在\res\drawable-hdpi\bg.png,那么skin程序中的資源也必須在\res\drawable-hdpi\bg.png

轉載于:https://www.cnblogs.com/Free-Thinker/p/3573391.html

總結

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

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