版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Android開發(fā)教程之獲取標(biāo)識(shí)ID存取識(shí)別符號(hào)Android:id屬性的內(nèi)容XML描述檔與R.java檔「R.java」檔案的作用將字串抽離XMLstrings.xml檔案存取string類型在上一章談了XML描述檔中界面元件的各種「android:」開頭的屬性。要使用一個(gè)界面元件,第一件事就是定義出界面描述檔。大局部的界面元件(如LinearLayout、TextView)不需要在程序中作后續(xù)處理,因此可以直接描述。不過對于那些將在程序中被參考(reference)到的界面元件〔如按鈕Button、文字輸入欄位EditText〕,我們需要透過在XML描述檔中,定義該界面元件的「android:id」識(shí)別符號(hào)屬性。之后在程序中所有與這個(gè)界面元件有關(guān)的操作,都能根據(jù)「android:id」識(shí)別符號(hào)來在調(diào)用這個(gè)界面元件。Android開發(fā)教程之存取識(shí)別符號(hào)代碼:<EditTextandroid:id="@+id/height"/>
前面章節(jié)提過,寫作時(shí)最好將XML描述檔屬性分行列出,以易于閱讀(增加可讀性)。而我們的范例卻將android:id屬性直接擺在EditText標(biāo)簽后。其實(shí)這么做同樣是基于易于閱讀的考量。當(dāng)然你也可以將「android:id」屬性分行列出,或是將「android:id」屬性放在屬性列表的中間或最后頭,這些作法都是允許的,本書中一律使用將android:id屬性直接擺在界面元件標(biāo)簽后的寫法。Android開發(fā)教程Android:id屬性的內(nèi)容長得比較特別:
代碼:@+id/height
「height」是這個(gè)界面元件的android:id。以后的程序中會(huì)使用「R.id.height」來取得這個(gè)界面元件?!福?id」的意思是我們可以通過這個(gè)識(shí)別符號(hào)來控制所對應(yīng)的界面元件,「R」類別會(huì)自動(dòng)配置一個(gè)位址給這個(gè)界面元件?!窻」類別的內(nèi)容那么可以透過查看R.java得知。Android開發(fā)教程之Android:id屬性的內(nèi)容在Android系統(tǒng)中,我們使用XML來定義UI。但是有些稍微有經(jīng)驗(yàn)的開發(fā)者可能會(huì)有疑問:
「用XML來描述界面固然方便,但是對于程序來說,直接用XML檔桉是不是太占空間了?」。
沒錯(cuò),如果Android是直接使用XML來儲(chǔ)存界面描述到上的話,一定會(huì)使用比起現(xiàn)在大的多的檔桉空間。解決的方法是Android并不直接使用XML檔桉,而是透過Android開發(fā)工具,自動(dòng)將XML描述檔轉(zhuǎn)換成資源檔桉。一旦應(yīng)用程序要使用某個(gè)界面或是任何種類的資源(字串、圖片、圖示、音效...),都使用索引來查詢。Android開發(fā)教程之XML描述檔與R.java檔當(dāng)你建立一個(gè)BMI新專桉,翻開位于「src/com/demo/android/bmi」目錄下的「R.java」檔,你可以看到如下的程序碼:
代碼:/*AUTO-GENERATEDFILE.DONOTMODIFY.
*
*Thisclasswasautomaticallygeneratedbythe
*aapttoolfromtheresourcedataitfound.It
*shouldnotbemodifiedbyhand.
*/Android開發(fā)教程packagecom.demo.android.bmi;
publicfinalclassR{
publicstaticfinalclassattr{
}
publicstaticfinalclassdrawable{
publicstaticfinalinticon=0x7f020000;
}Android開發(fā)教程publicstaticfinalclasslayout{
publicstaticfinalintmain=0x7f030000;
}
publicstaticfinalclassstring{
publicstaticfinalintapp_name=0x7f040000;
}
}Android開發(fā)教程在照著前一章新增了XML描述后,再次翻開翻開「src/com/demo/android/bmi」目錄下的「R.java」檔,你可以看到如下的程序碼:
代碼:/*AUTO-GENERATEDFILE.DONOTMODIFY.
*
*Thisclasswasautomaticallygeneratedbythe
*aapttoolfromtheresourcedataitfound.It
*shouldnotbemodifiedbyhand.
*/Android開發(fā)教程packagecom.demo.android.bmi;
publicfinalclassR{
publicstaticfinalclassattr{
}
publicstaticfinalclassdrawable{
publicstaticfinalinticon=0x7f020000;
}Android開發(fā)教程publicstaticfinalclassid{
publicstaticfinalintheight=0x7f050000;
publicstaticfinalintresult=0x7f050003;
publicstaticfinalintsubmit=0x7f050002;
publicstaticfinalintsuggest=0x7f050004;
publicstaticfinalintweight=0x7f050001;
}Android開發(fā)教程publicstaticfinalclasslayout{
publicstaticfinalintmain=0x7f030000;
}
publicstaticfinalclassstring{
publicstaticfinalintapp_name=0x7f040000;
}
}
我們看到在R.java檔桉中,分別有attr(屬性)、drawable(圖片、圖示)、id(識(shí)別符號(hào))、layout(界面描述)、string(文字)這幾種資源型態(tài),就XML描述檔中的id來說,開發(fā)工具會(huì)根據(jù)XML描述檔中指定的id,生成對應(yīng)的資源,并自動(dòng)指定一個(gè)位址。Android開發(fā)教程Google官方文件是這么解釋「R.java」檔案的作用的:
Aproject'sR.javafileisanindexintoalltheresourcesdefinedinthefile.Youusethisclassinyoursourcecodeasasortofshort-handwaytorefertoresourcesyou'veincludedinyourproject.Thisisparticularlypowerfulwiththecode-completionfeaturesofIDEslikeEclipsebecauseitletsyouquicklyandinteractivelylocatethespecificreferenceyou'relookingfor.
Theimportantthingtonoticefornowistheinnerclassnamed"layout",anditsmemberfield"main".TheEclipsepluginnoticedthatyouaddedanewXMLlayoutfileandthenregeneratedthisR.javafile.Asyouaddotherresourcestoyourprojectsyou'llseeR.javachangetokeepup.Android開發(fā)教程之「R.java」檔案的作用有了「R.java」做中介,在XML描述檔中,我們可以透過
@[類型]/[識(shí)別符號(hào)]
這樣的語法來為某個(gè)界面元件提供識(shí)別符號(hào),以供程序控制。
例如,我們可以用「@+id/height」來為對應(yīng)供輸入身高數(shù)字的EditText元件提供識(shí)別符號(hào)。Android開發(fā)教程當(dāng)我們在res資料夾中新增各種一個(gè)XML檔桉,或是一張圖片時(shí),開發(fā)工具會(huì)從res資料夾中集,并將各種資源整成一個(gè)索引,自動(dòng)產(chǎn)生出R.java檔。透過這個(gè)特性,我們可以進(jìn)一步加工我們的XML描述檔,讓界面更易于維護(hù)。開啟res/values/strings.xml,原始的內(nèi)容為
代碼:<?xmlversion="1.0"encoding="utf-8"?>
<resources>
<stringname="app_name">BMI</string>
</resources>Android開發(fā)教程之將字串抽離XML上面只定義了一個(gè)字串「app_name」,用來表示應(yīng)用程序名稱〔在之后講解AndroidManifest.xml檔桉時(shí)將會(huì)用到〕。我們看到表示字串的格式為
代碼:<stringname="識(shí)別代號(hào)">文字表達(dá)</string>
我們將上一章中的表達(dá)抽取出來,整理進(jìn)strings.xml檔桉。Android開發(fā)教程完整的strings.xml檔桉如下:
代碼:<?xmlversion="1.0"encoding="utf-8"?>
<resources>
<stringname="app_name">BMI</string>
<stringname="height">身高(cm)</string>
<stringname="weight">體重(kg)</string>
<stringname="bmi_btn">計(jì)算BMI值</string>
<stringname="bmi_result">你的BMI值是</string>
</resources>Android開發(fā)教程之strings.xml檔桉在strings.xml檔桉中,我們在原本的app_name字串外,自行定義了另外幾個(gè)字串。如果我們再次開啟「R.java」檔,我們會(huì)發(fā)現(xiàn)檔桉中的string類別中也自動(dòng)索引了上面定義好的字串:
代碼:publicstaticfinalclassstring{
publicstaticfinalintapp_name=0x7f040000;
publicstaticfinalintbmi_btn=0x7f040003;
publicstaticfinalintbmi_result=0x7f040004;
publicstaticfinalintheight=0x7f040001;
publicstaticfinalintweight=0x7f040002;
}Android開發(fā)教程接著,我們把這些字串應(yīng)用到之前定義好的XML描述檔中。透過使用@string/[識(shí)別符號(hào)]這樣存取string類型的格式,來取代main.xml檔桉中原本寫死的文字表達(dá)。
完整的程序碼如下:
代碼:<?xmlversion="1.0"encoding="utf-8"?>
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>Android開發(fā)教程之存取string類型<TextViewandroid:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/height"
/>
<EditTextandroid:id="@+id/height"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:numeric="integer"
android:text=""
/>Android開發(fā)教程<Buttonandroid:id="@+id/submit"
*android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/bmi_btn"
/>Android開發(fā)教程<TextViewandroid:id="@+id/result"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=""
/>Android開發(fā)教程<TextViewandroid:id="@+id/suggest"
android:layout_width="fill_parent"
andro
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人保車險(xiǎn)理賠基本知識(shí)
- 合規(guī)部門培訓(xùn)
- 二零二五年度購房定金及房屋抵押貸款服務(wù)合同
- 2025年度新能源銀行抵押貸款合同書
- 二零二五年度互聯(lián)網(wǎng)企業(yè)軟件著作權(quán)許可合同范本
- 二零二五年度牲畜代養(yǎng)與科研開發(fā)合作合同
- 二零二五商鋪?zhàn)赓U合同解除與商業(yè)活動(dòng)調(diào)整及裝修補(bǔ)償協(xié)議
- 二零二五年度物流運(yùn)輸保險(xiǎn)代理合同
- 二零二五年度購房定金及貸款服務(wù)合同
- 二零二五年度知識(shí)產(chǎn)權(quán)贈(zèng)與合同范本
- 2025年湖北武漢工程大學(xué)招聘6人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 【數(shù) 學(xué)】2024-2025學(xué)年北師大版數(shù)學(xué)七年級上冊期末能力提升卷
- GB/T 26846-2024電動(dòng)自行車用電動(dòng)機(jī)和控制器的引出線及接插件
- 三創(chuàng)賽獲獎(jiǎng)-非遺文化創(chuàng)新創(chuàng)業(yè)計(jì)劃書
- 綠城物業(yè)室內(nèi)公共區(qū)域清潔作業(yè)規(guī)程
- 封條模板A4直接打印版
- 危險(xiǎn)貨物道路運(yùn)輸企業(yè)安全檢查通用清單
- 用友NC財(cái)務(wù)軟件操作手冊
- 眼內(nèi)炎患者護(hù)理查房
- 電工維修培訓(xùn)資料 維修電工技術(shù)學(xué)習(xí) 維修電工常識(shí) 電工培訓(xùn)ppt課件
- 撲克牌24點(diǎn)練習(xí)題大全
評論
0/150
提交評論