天天看點

《Android應用開發入門經典(第3版)》——第1.5節定制應用

本節書摘來自異步社群《android應用開發入門經典(第3版)》一書中的第1章,第1.5節定制應用,作者 【美】carmen delessio , lauren darcey , shane conder,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

1.5 定制應用

android應用開發入門經典(第3版)

剛才建立的簡單應用會顯示如圖1.11所示的詞組“hello world!”。讀者可能會想要定制這個應用以加入一些互動性功能,如添加一個可供輸入資料的字段和一個按鈕,當使用者單擊按鈕時輸入的文本會出現在螢幕的中央。

1.5.1 更新使用者界面

定制應用的第一步是更新使用者界面。

使用可視化編輯器更新使用者界面

使用内置于adt的可視化編輯工具可以添加一個按鈕和edittext域。edittext域是一個文本輸入域。要完成這個任務需要執行下列步驟。

1.在res/layout檔案夾中找到activity_main.xml檔案,這個檔案就是建立應用時所展示的檔案。

2.在元件面闆的form widgets區域中選擇一個按鈕并将其拖動到應用的畫布上,如圖1.11所示。

3.選擇元件面闆中的text fields區域,選中第一種edittext域并将其拖動到畫布上。在拖動的時候讀者可以看到詞組“plain text”,如圖1.12所示。

《Android應用開發入門經典(第3版)》——第1.5節定制應用

1.5.2 在代碼中增加動作

現在已經為應用定制了一個簡單的使用者界面,并且也已經添加了引用button和edittext的代碼,下一步要做的就是更新螢幕中央的textview了。程式清單1.1給出了剛才使用可視化編輯器建立的按鈕的xml代碼。第2行代碼将button的id指定為button1,edittext的id為edittext1,原先的textview的id為textview1。這些id是非常重要的,因為在代碼中将會使用它們來引用這些使用者界面。

程式清單1.1 在xml布局中定義的button

《Android應用開發入門經典(第3版)》——第1.5節定制應用

這個按鈕的作用是接收在 edittext 輸入的資訊,并在按鈕被點選時将這些資訊放入textview 中。要完成這一任務的第一步是要在使用者界面和代碼之間建立連接配接,第二步是在button上添加一個動作。

讀者需要修改生成的代碼。在eclipse中選中mainactivity.java,然後需要修改oncreate()方法中的代碼,但在這之前首先需要引入這些使用者界面元素。

《Android應用開發入門經典(第3版)》——第1.5節定制應用

這些java類位于android的widget包中。

接下來是要在 oncreate()方法中添加代碼,以便将布局檔案中的資源與代碼關聯起來,程式清單1.2給出了 oncreate()方法。第5行到第9行定義了一個可在代碼中使用的edittext、textview以及button,這種關聯關系是通過findviewbyid()方法來建立的。第4行将項目中res/layout檔案夾下名為activity_main.xml的xml布局檔案與這個activity綁定了起來。第5行到第8行分别引用了在該檔案中定義的各個id。

《Android應用開發入門經典(第3版)》——第1.5節定制應用

在第5行和第6行的聲明中加入了final修飾符。final變量在指派之後是無法改變其值的。在本例中之是以這樣做是為了在處理button事件的代碼中使用這些變量。如果不将變量e聲明為final的話,就會在eclipse中看到如下的錯誤:

《Android應用開發入門經典(第3版)》——第1.5節定制應用

這個錯誤出現在第 10 行。第 10 行在一個内部類中使用了變量 e。第 8 行聲明了類onclicklistener()的一個新執行個體。像這樣在一個單獨的類中使用一個可能會發生變化的變量是不允許的,而将e聲明為一個final變量之後就可以在内部類中使用它了,因為可以確定它的值不會發生變化了。當然,讀者也可以将這個edittext定義為類的一個字段,這樣的話它就有了全局作用于并且對所有方法都可見了。根據edittext域中的資料來更新textview的代碼位于第10行,它将從變量e中讀取的文本設定在變量t中。第10行位于button b的onclick()方法中。第8行的onclicklistener()告訴button b監聽點選事件。當這個button上的單擊事件發生時就會觸發onclicklistener中的onclick()方法,該方法中的代碼會更新textview。

完成這些修改之後,就可以在模拟器中運作這個應用并觀察所發生的互動了。`

繼續閱讀