日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Android APK方式换肤实现原理

發布時間:2025/4/9 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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方式换肤实现原理的全部內容,希望文章能夠幫你解決所遇到的問題。

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