android项目中values中几个文件的作用
最近反編譯了幾個(gè)Android軟件,發(fā)現(xiàn)一些以前未用到的資源文件:
ids.xml——為應(yīng)用的相關(guān)資源提供唯一的資源id。id是為了獲得xml中的對(duì)象而需要的參數(shù),也就是Object = findViewById(R.id.id_name)中的id_name。這些值可以在代碼中用android.R.id引用到。
若在ids.xml中定義了ID,則在layout中可如下定義@id/price_edit,否則@+id/price_edit。
為什么使用ids?
我個(gè)人認(rèn)為有以下幾點(diǎn)作用:
(1)優(yōu)化編譯效率。
我們知道android的組件必須用一個(gè)int類型的id屬性來標(biāo)識(shí)其唯一性,id屬性必須以@開頭的值,例如,@id/abc、@+id/xyz等。
如果使用"@+id/name"形式,當(dāng)R.java中存在名為name變量時(shí),則該組件會(huì)使用該變量的值作為標(biāo)識(shí)。如果不存在該變量,則添加一個(gè)新的變量,并為該變量賦相應(yīng)的值(不會(huì)重復(fù))。
當(dāng)修改完某個(gè)布局文件并保存后,系統(tǒng)會(huì)自動(dòng)在R.java文件中生成相應(yīng)的int類型變量。變量名就是“/”后面的值,例如,@+id/xyz會(huì)在R.java文件中生成int xyz = value,其中value是一個(gè)十六進(jìn)制的數(shù)。如果xyz在R.java中已經(jīng)存在同名的變量,就不再生成新的變量,而該組件會(huì)使用這個(gè)已存在的變量的值。
使用@id/name形式,預(yù)先定義的id已經(jīng)生成,修改配置文件時(shí),也不會(huì)引起系統(tǒng)重新生成。
(2)統(tǒng)一管理資源Id。
public.xml——描述的是為attr、id、drawable所指定的一個(gè)32的id值,這個(gè)值在current.xml文件中會(huì)被用到。
當(dāng)我們對(duì)public.xml做了改動(dòng)后,執(zhí)行make update-api命令,相應(yīng)的current.xml就會(huì)添加這些改動(dòng)。
在public.xml中資源數(shù)據(jù)的定義會(huì)影響到current.xml文件,它們分別在frameworks/asecoreesesvalues和framework/aseapicurrent.xml中。
當(dāng)進(jìn)行內(nèi)核文件修改時(shí),需要特別注意public.xml文件的同步,該文檔定義了資源文件的二進(jìn)制兼容性。因此需要小心對(duì)待該文件,否則可能會(huì)破壞該版本的向后兼容性。
為了避免破壞兼容性,新的資源需加在同類資源的最后(主要ID值,按照ID值遞增)。若是放置在中間會(huì)導(dǎo)致隨后的同類資源被賦予新的ID值從而破壞兼容性。
添加id的方法:
1)在ids.xml中添加公共id項(xiàng),在public.xml中也添加相應(yīng)的id項(xiàng)。這種辦法沒有兼容性,會(huì)與后面的版本產(chǎn)生沖突。
2)在ids.xml中添加公共id項(xiàng),每一項(xiàng)前面加一行<!– @hide –>的注釋,這樣就不用在public.xml中添加相應(yīng)的項(xiàng)了。源碼中是的形式,這樣current中就不會(huì)有相應(yīng)的段了。
3)在自己寫的xml中,使用android:id = “@+id/id_name”的形式,就和在eclipse中一樣,搜一下會(huì)發(fā)現(xiàn)android源碼中也有這么用的,這樣ids.xml和public.xml都不用改,兼容性我還不確定。
其它常用的資源文件:
attrs.xml——當(dāng)中定義的是類的屬性,屬性是為 了能在xml文件中被引用到,換句話說就是指定類中變量(也就是屬性的實(shí)際作用者)的值。這些屬性會(huì)在類的構(gòu)造函數(shù)中用到??催^一兩個(gè)源碼就會(huì)明白,構(gòu)造 函數(shù)中的TypedArray其實(shí)就是屬性的數(shù)組,數(shù)組的成員會(huì)被賦給類里的成員,完成從xml的初始化。類的構(gòu)造函數(shù)一般有三個(gè),一個(gè)是 Class(context),這個(gè)用于在代碼中創(chuàng)建一個(gè)類,所以只包含一個(gè)上下文;Class(context, attrs)和Class(context, attrs, defStyle)用于從xml創(chuàng)建類的情況。
styles.xml——當(dāng)中是各個(gè)控件的“樣式”,樣式由一個(gè)個(gè)屬性所組成。我們?cè)诰庉媥ml文件的時(shí)候,不同的類所能設(shè)置的屬性有共同的,也有不同的,都是由樣式來控制的。具體可以去看styles.xml這個(gè)文件的內(nèi)容。
themes.xml其實(shí)也是樣式,只是適用的范圍大一點(diǎn),這個(gè)我是參考網(wǎng)上別人的看法,自己還沒研究過。
colors.xml——當(dāng)中定義各種顏色值。
strings.xml——當(dāng)中定義使用到的字符串常量。
?
原文摘自:
http://blog.sina.com.cn/s/blog_a130052501011bks.html
轉(zhuǎn)載于:https://www.cnblogs.com/YangBinChina/p/3245091.html
總結(jié)
以上是生活随笔為你收集整理的android项目中values中几个文件的作用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: keil之编辑环境配置
- 下一篇: 【ACM】nyoj_305_表达式求值_