載入外掛程式資源的Demo

2021-08-15 12:45:02 字數 2712 閱讀 2595

首先了解一下google載入資源原始碼

效果圖

imageview中載入src原始碼

final drawable d = a.getdrawable(r.styleable

.imageview_src);

getdrawable原始碼

if (getvalueat(index*assetmanager.style_num_entries, value)) 

return mresources.loaddrawable(value, value.resourceid, mtheme);

}

可以看到最終呼叫resource中的loaddrawable方法

獲取getresources原始碼,目的了解獲取resource怎麼去例項化的,一步一步走下去

@override

public resources getresources()

發現呼叫的content中的抽象方法getresource方法

檢視contextimpl中的getresource的方法

@override

public resources getresources()

檢視mresource怎麼被賦值的

mresources = resources;

resources resources = packageinfo.getresources(mainthread);

getresource原始碼

public resources getresources(activitythread mainthread) 

return mresources;

}

檢視activitythread中gettoplevelresources原始碼

resources gettoplevelresources(string resdir, string splitresdirs, string overlaydirs,

string libdirs, int displayid, configuration overrideconfiguration,

loadedapk pkginfo)

檢視resourcemanager中gettoplevelresources原始碼

r = new resources(assets, dm, config, compatinfo, token);

assetmanager assets = new assetmanager();

if (resdir != null)

}

資源載入的總結:所有的資源載入通過resource -> 構建物件是直接new的物件 -> assetmanager 其實是resource的核心例項 -> 最終是通過assetmanager獲取

案例:首先我們準備資源的apk,修改apk名字為meinv.skin:儲存到本地手機中,我這裡是直接拖到虛擬機器/download目錄下的**很簡單,直接貼上了,注意原始碼中有代表不能直接new必須通過反射獲取例項

public void onclick(view view)

method method = assetmanager.class

.getdeclaredmethod("addassetpath", string.class);

method.invoke(assets, environment.getexternalstoragedirectory().getabsolutepath()

+ file.separator + "download"+file.separator+"meinv.skin");

resources resources = new resources

(assets, superresource.getdisplaymetrics(), superresource.getconfiguration());

//獲得資源的id

int resourceid = resources.getidentifier("image_src", "drawable", "com.hbwj.kanyuanma");

drawable drawable = resources.getdrawable(resourceid);

skin_imageview.setimagedrawable(drawable);

} catch (exception e)

}

Jquery 外掛程式開發 demo

閉包限定命名空間 function de ts,options 使用jquery.extend 覆蓋外掛程式預設引數 return this.each function 格式化高亮文字 var markup this.html markup fn.highlight.format markup th...

web 資源的載入

web 資源的載入 在web中,可以載入一些檔案到專案中去,可以是配置檔案,也可以是普通的txt檔案等,而檔案載入的方法有三種。而談到檔案載入必須用到的乙個類就是property。而必備的操作就是 properties props new properties props.load 讀取流 三種載入...

資源的後台載入

現代的遊戲大多資源量都比較大,無法做到遊戲啟動之初就載入了全部資源,所以資源動態載入必然要做。下面說一說一些不同的資源動態載入方案。第一種方式,分貞載入。所謂分貞載入顧名思義就是把遊戲資源的載入分解到不同貞去做,這樣可以降低某一貞突然載入大量資源導致的幀率急劇下降。這種分貞可以是以資源為單位,也可以...