本文作者 本文由iJero授權(quán)發(fā)布。 iJero的博客地址: http://www.jianshu.com/u/aff729e04f65 場景介紹項目中難免會有這樣的需求,需要使用到系統(tǒng)自帶的圖標(biāo)(drawable)、字符串(string)等資源,今天就主要記錄一下string和drawable。 比如目前,我自己遇到這樣的需求:顯示一個apk或者是已經(jīng)安裝的應(yīng)用的權(quán)限信息,并能準(zhǔn)確描述出該權(quán)限的作用。 額,起初我的想法是醬紫的:獲取出應(yīng)用在AndroidManifest.xml中定義的user-permission,然后自己定義string字符串,對應(yīng)起來…… 可是現(xiàn)在當(dāng)我開始正式做這個功能時,再細(xì)想當(dāng)時的想法就尼瑪了,這Android系統(tǒng)的權(quán)限就像山歌一樣排隊排……我自己寫對應(yīng)的字符串去排……要排到啥時候,那我豈不是要手寫這…………………………么長的代碼? 看來這個方案不可用,還是嫑這么折騰。 那怎么辦?
哎喲不錯哦,系統(tǒng)自帶就有,Hiahia....。 然后通過翻看Android系統(tǒng)源代碼?。“就這么搞定了。(好直接,一點關(guān)子都不賣) 好,下面先鼓掌(手動鼓掌~) 額,不對,下面開始看代碼: 在源代碼base/core/res/AndroidManifest.xml文件中,我們最常用的聯(lián)網(wǎng)權(quán)限是這樣定義的權(quán)限: 可以看到定義的permission有android:description、 android:label兩個屬性。這不用解釋了吧,直接看這兩個引用對應(yīng)的中文字符串定義: 沒毛病,但是怎么用呢? 系統(tǒng)String這都知道string的id了,就直接用吧~當(dāng)然,普通的android.R.string. 后面怎么也點不出來的,所以這里要用特殊一點的方法獲取Android自帶的資源。 int lebId = Resources.getSystem() .getIdentifier('permlab_accessNetworkState', 'string', 'android');String lab = getString(lebId); 這就獲取到了permlab_accessNetworkState(INTERNET權(quán)限)的標(biāo)題資源id獲取字符串就是普通的通過上下文getString()就行。 完整代碼: 說了這么多,不要以為這沒什么用,畢竟是獲取系統(tǒng)級的資源,也看到了,這是自帶國際化的字符串,我模擬器調(diào)成中文的語言,獲取出來的就是咱偉大的國語醬紫。 那下面舉一反三簡單說說系統(tǒng)的drawable怎么用? 系統(tǒng)Drawable 首先看下要顯示啥玩意兒…… 看了半天啊,我決定用這張,OK不? 行,那就用這個吧,其實用法跟剛才那個獲取字符串差不多……不信你看: super easy for xml: super easy for java: super easy for display: 代碼解釋 好,現(xiàn)在回頭看看getIdentifier方法的文檔: name:資源名稱。 defType:資源類型。 后記其實資源還有很多……
各種類型的資源,都有~~~哈哈哈
|
|