Android APK方式換膚實現原理

2021-09-06 14:02:14 字數 1285 閱讀 8295

這種方式就是把**打包成乙個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"?>

""package="cn.angrycode.main"

android:versioncode="1"

android:versionname="1.0" android:shareduserid="cn.angrycode.main">

"7" />

".main"

"android.intent.action.main" />

"android.intent.category.launcher" />

在skin應用中

""package="cn.angrycode.skin"

android:versioncode="1"

android:versionname="1.0" android:shareduserid="cn.angrycode.main">

"7" />

這樣在主應用中就可以通過**進行設定**

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

css 實現換膚幾種方式

說起換膚功能,前端肯定不陌生,其實就是顏色值的更換,實現方式有很多,也各有優缺點 對於只提供幾種主題方案,讓使用者來選擇的,一般就簡單粗暴的寫多套主題 可以參看 element ui 的換膚實現,就是先把樣式中顏色全部替換後在塞到標籤裡面 modifyvars方法是是基於 less 在瀏覽器中的編譯...

實模式定址方式

邏輯位址 即邏輯上的位址,實模式下由 段基位址 段內偏移 組成 保護模式下由 段選擇符 段內偏移 組成。線性位址 邏輯位址經分段機制後就成線性位址,它是平坦的 如果不啟用分頁,那麼此線性位址即實體地址。實體地址 剛才說了8086cpu 資料匯流排為 16位,也就是一次最多能取 2 16 64kb 資...

Qml 自定義面板控制項,支援顏色的方式換膚

關注我部落格的同學,一直覺得我在提供的 中,有很多自定義的控制項,導致 沒得辦法直接被使用。之所以沒有在之前的部落格裡面沒有把哪些自定義的 提供出來,是因為我這邊一直還沒有整理完成,也沒有按照我想要的框架搭建完成。今天我將這 控制項終於基本修改完成,只是每個控制項展示dome還沒有建立完成。但是我會...