首先了解一下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怎麼被賦值的getresource原始碼mresources = resources;
resources resources = packageinfo.getresources(mainthread);
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 讀取流 三種載入...
資源的後台載入
現代的遊戲大多資源量都比較大,無法做到遊戲啟動之初就載入了全部資源,所以資源動態載入必然要做。下面說一說一些不同的資源動態載入方案。第一種方式,分貞載入。所謂分貞載入顧名思義就是把遊戲資源的載入分解到不同貞去做,這樣可以降低某一貞突然載入大量資源導致的幀率急劇下降。這種分貞可以是以資源為單位,也可以...