Android開發(fā)教程之獲取標(biāo)識(shí)-ID_第1頁
Android開發(fā)教程之獲取標(biāo)識(shí)-ID_第2頁
Android開發(fā)教程之獲取標(biāo)識(shí)-ID_第3頁
Android開發(fā)教程之獲取標(biāo)識(shí)-ID_第4頁
Android開發(fā)教程之獲取標(biāo)識(shí)-ID_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論