第六章 用戶交互

2021-10-21 12:00 更新

第六章 用戶交互

在這篇教程中,我們將對之前所添加的Button元素進行設(shè)置以實現(xiàn)對用戶點擊的檢測與響應。為了達成這一目標,我們需要在應用程序的主 Activity類中略微涉及Java編程內(nèi)容。如果大家在Java開發(fā)方面的經(jīng)驗不太豐富也沒必要擔心,只要按步驟進行即可完成學習。我們將在本系列的 下一篇文章中深入探討Java語法,從而保證大家了解初步Android開發(fā)任務(wù)中所必需的編程語言知識。

大家可以在Android當中以多種不同方式實現(xiàn)用戶交互。我們將學習兩種最為典型的處理方案,從而實現(xiàn)應用按鈕對用戶點擊的感應——兩種方案都會用到一點XML代碼以及Java實施流程。Android當中包含幾種不同的交互UI元素,足以感應來自用戶的各類輸入操作。輸入操作的處理方式必須與 UI項相匹配,但整個過程仍然大體相同。我們將以一個按鈕為起點開始探索Android平臺上的用戶交互,因為按鈕無疑是最簡單也最常用的界面元素。

1. 用戶交互基礎(chǔ)

在進一步探討細節(jié)之前,我要首先為剛剛接觸應用程序開發(fā)工作的朋友們解釋幾項UI概念。為了實現(xiàn)應用交互,我們需要利用特定元素檢測用戶的交互操 作??催^上一篇文章的朋友一定還記得,Android中存在View,而在今天的示例中具體是指Button。要實現(xiàn)交互,我們首先需要“監(jiān)聽”用戶的操 作。雖然Android主要運行在搭載觸控屏幕的移動設(shè)備上,但大家仍然可以在計算機上利用編程語言處理交互開發(fā)。舉例來說,在后面提到“點擊”的部分, 我們指的是利用鼠標點擊或者用手指觸摸/點觸對應位置。

用戶與應用程序的交互方式是多種多樣的。他們可以點觸、劃動以及“長按”對應項目。當這些操作活動發(fā)生時,我們將其稱為一個“事件”。因此,我們需 要通過設(shè)置讓應用程序監(jiān)聽特定UI項目上是否發(fā)生了特定事件。在今天的示例中,我們需要監(jiān)聽針對Button的點擊(或者點觸/觸摸)操作。

我們需要監(jiān)聽并響應這類用戶事件。要做到這一點,我們將向Java Activity類中添加代碼以實現(xiàn)對按鈕點擊的監(jiān)聽與響應。只要按鈕上出現(xiàn)點擊事件,這部分代碼就會開始執(zhí)行。雖然其它類型的用戶交互會涉及不同的方法 代碼以及多種多樣的事件類型,但其基本過程都是相通的。

2. 識別UI元素

第一步

為了指明用戶交互具體指向哪個View,我們需要在應用程序當中識別出每個交互性View。在文章列舉的范例中,我們只討論一個View——但大家 在今后實際進行應用開發(fā)時,可能會用到多種不同類型的交互性View。為了讓它們彼此之間有條不紊地運作,我們需要為每個View設(shè)置一個用于識別的獨特 ID屬性,并將其應用于整個應用程序。首先在Eclipse中打開我們的主布局文件并切換到XML編輯標簽。接下來找到我們?yōu)锽utton元素添加的代碼,利用以下語法為其分配一個ID:

android:id="@+id/myButton"

我們需要為Android布局中所使用的每一個元素分配ID屬性,從而幫助自己順利識別每個View元素。請注意以上代碼中的“@+id”語法。這 會提示Android工具在項目資源“R.java”文件中創(chuàng)建一個新ID,并為其指定一個在應用程序內(nèi)獨一無二的文本字符串,也就是 “myButton”。在應用中XML布局代碼的其余部分乃至其它XML與Java文件內(nèi),我們將使用這一名稱來指定Button View。而后保存當前布局文件。

第二步

打開應用程序中的主Activity文件。我們將向其中添加一點點Java代碼,但大家不用為自己令人捉急的Java水平而擔憂,只要理解其中與處 理用戶交互相關(guān)的大致流程即可。如果各位朋友原先從未接觸過Java,請繼續(xù)關(guān)注我們的下一篇教程,到時候回頭再看就會發(fā)現(xiàn)現(xiàn)在的內(nèi)容其實非常簡單。我們 要在Activity類中創(chuàng)建一個變量來引用Button View。在類聲明開頭、起始內(nèi)容之后:

public class MainActivity extends Activity {

添加變量聲明:

private Button theButton;

我們的聲明包含視覺特性(下一次再詳加說明)、變量類型以及變量名稱。Eclipse可能會在“Button”文本部分加注下劃線并提示 “Button不能被解析為一個類型”。由于我們使用的是由Android平臺所提供的Button類型,所以必須將其導入至類文件當中。將鼠標懸停在 “Button”文本上方,Eclipse將為我們顯示出一套建議列表。在其中選擇“Import‘Button’(android.widget)”。 這樣類文件頂部就會出現(xiàn)一個可以自由展開與收起的導入聲明列表。

6.1eclipse_import_prompt

第三步

現(xiàn)在我們可以在布局當中取回指向Button View的引用,并將該引用保存在我們所創(chuàng)建的變量當中。在我的Activity onCreate方法中,緊接著以下代碼行進行布局設(shè)置:

setContentView(R.layout.activity_main); 

如下所示輸入一行新代碼以取回Button:

    theButton = (Button)findViewById(); 

在“findViewById()”的括號中輸入“R.”——Eclipse會為我們提供資源類型提示列表。在其中選擇“id”。


上述代碼會在按鈕被點擊后指定需要執(zhí)行的方法名稱。對應方法應該被添加到顯示在布局中的Activity類當中。這樣一來,我們就不必向Activity 類中加入大量代碼,包括創(chuàng)建Button變量、在其中保存View引用、實施OnClickListener或者為該按鈕設(shè)置一個專門的點擊監(jiān)聽類。在本 次示例中,我們可以通過添加以下代碼(使用同樣的代碼以實現(xiàn)一致的操作效果)來取代向類中添加onClick方法:

public void buttonClicked(View v){
    Button theButton = (Button)v;
    theButton.setText("Ouch");
}

盡管這種方法看起來似乎更簡單,但它利用Java讓引用指向布局元素的過程值得認真關(guān)注——大家在今后的應用程序開發(fā)過程中會經(jīng)常用到。另外,如果大家的布局當中包含多個可點擊項目,可能會更傾向于在同一個方法內(nèi)處理所有點擊事件——在這種情況下,文章前面提到的方案會更為理想。

除了文章中提到的兩套方案,我們還可以通過其它多種途徑實現(xiàn)View上的點擊處理任務(wù),但其它辦法要更復雜一些,不太適合作為新手教學來使用。

第二步

在這篇教程中,我們了解了如何利用最基本的方式處理Android系統(tǒng)中的按鈕點擊事件。該平臺還針對不同View類型提供一系列其它用戶事件的處理能力,包括長按、按鍵以及觸摸等等。感興趣的朋友可以參閱Android開發(fā)者指南,從中了解自己在未來的項目開發(fā)工作中可能接觸到的各類事件處理任務(wù)。

總結(jié)

在這一部分當中,我們探討了如何遵循基本流程實現(xiàn)Android UI中對用戶點擊按鈕的響應。今天涉及到的內(nèi)容與整套Android用戶交互機制相比只能算是九牛一毛,但大家應該能夠從這種通用型方法中領(lǐng)會主干、從而指導自己在未來的項目中拿出符合用戶輸入習慣的開發(fā)成果。在本系列的其它教程中,我們將了解Java語言中最為本質(zhì)的主要特性,從而在Android開發(fā)的學習當中取得一個又一個輝煌的勝利。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號