在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ Android SDK 上手指南:用戶交互
Android SDK 上手指南:Java 應用程序編程
Android SDK 上手指南:下一步學習方向
Android SDK 上手指南:用戶交互
Android SDK 上手指南:項目清單
Android SDK 上手指南:虛擬與物理設備
Android SDK 上手指南:Activity 與生命周期
Android SDK 上手指南:示例項目
剖析 Android SDK:Android 組件詳解
Android SDK 上手指南:應用程序數(shù)據
Android SDK 上手指南:應用程序資源
Android SDK 上手指南:應用程序發(fā)布
Android SDK 上手指南:應用程序結構
Android SDK 上手指南:知識測試(1)
Android SDK 上手指南:用戶界面設計
Android SDK 上手指南:運行與調試

Android SDK 上手指南:用戶交互

在這篇教程中,我們將對之前所添加的 Button 元素進行設置以實現(xiàn)對用戶點擊的檢測與響應。為了達成這一目標,我們需要在應用程序的主 Activity 類中略微涉及 Java 編程內容。

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

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

1.用戶交互基礎

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

用戶與應用程序的交互方式是多種多樣的。他們可以點觸、劃動以及“長按”對應項目。當這些操作活動發(fā)生時,我們將其稱為一個“事件”。因此,我們需要通過設置讓應用程序監(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 設置一個用于識別的獨特 ID 屬性,并將其應用于整個應用程序。首先在 Eclipse 中打開我們的主布局文件并切換到 XML 編輯標簽。接下來找到我們?yōu)?Button 元素添加的代碼,利用以下語法為其分配一個 ID:

android:id="@+id/myButton" 

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

第二步

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

public class MainActivity extends Activity { 

添加變量聲明:

private Button theButton; 

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

http://wiki.jikexueyuan.com/project/android-sdk/images/1.png" alt="" />

第三步

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

setContentView(R.layout.activity_main);

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

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

http://wiki.jikexueyuan.com/project/android-sdk/images/2.png" alt="" />

輸入另一個句號“.”——Eclipse 會顯示現(xiàn)有 ID 值列表。目前我們只添加了一個 ID 值,選擇我們?yōu)?Button 設置的 ID 名稱——也就是“myButton”。

http://wiki.jikexueyuan.com/project/android-sdk/images/3.png" alt="" />

大家會定期利用這種方法在 Java 代碼當中實現(xiàn)資源引用。現(xiàn)在我們應該擁有以下代碼行:

theButton = (Button)findViewById(R.id.myButton); 

這條聲明將 Button View 引用分配到了我們剛剛創(chuàng)建的新變量當中,旨在利用其 ID 實現(xiàn) View 識別。

3.監(jiān)聽事件

第一步

在我們要求時,Android 系統(tǒng)只會在 View 上檢測事件。因此我們需要為 View 分配一個監(jiān)聽器。分配監(jiān)聽器也有幾種不同的途徑,不過我們還是先從最簡便的入手:由 Activity 類自身進行點擊的監(jiān)聽與響應。在類的開頭按以下內容對聲明行進行擴展:

public class MainActivity extends Activity implements OnClickListener { 

與前面提到的情況一樣,Eclipse 這次又會對“OnClickListener”類型提出警告。老辦法,鼠標懸停在錯誤內容上方并根據需求進行導入——選擇“Import‘OnClickListener’(android.view.View)”。在這里,大家可以看到 Eclipse 如何幫助我們管理項目中的各組成部分。現(xiàn)在它又顯示出另一條錯誤信息,提示我們需要實施一種方法。先不管它,這個問題放到后面解決。

代碼中“implements OnClickListener”部分是指該 Activity 類將采用一套特定接口。下一次我們會更深入地探討其具體細節(jié)——它從本質上意味著該類將提供一類特殊功能,在我們的例子中該功能允許大家處理點擊操作。

第二步

回到 Activity onCreate 方法。在我們通過 ID 將 Button View 引用分配給變量的代碼行下面,添加新的代碼行:

theButton.setOnClickListener(this); 

這一行命令應用程序監(jiān)聽 Button 上的點擊操作。括號中的“this”指定處理點擊操作的對象。在本文的示例中,該對象指代 Activity 類運行實例本身。

4.響應事件

第一步

現(xiàn)在我們已經能夠響應按鈕點擊了。在類 onCreate 方法的最后加入右括號:

theButton.setOnClickListener(this); 

添加以下方法概要:

public void onClick(View v){ 
        //respond to click 
} 

再次進行導入流程,在“View”上方懸停并選擇“Import‘View’(android.view)”。由于我們已經命令該類監(jiān)控按鈕上的點擊,因此當點擊操作發(fā)生時,方法就將開始執(zhí)行(其內容,或者說“方法本體”,將被放置在兩個大括號之間)。其中的“View v”是該方法的一項參數(shù),代表該方法將作為指向被點擊 View 的引用處理,這樣我們就能對其進行識別。

第二步

在 onClick 方法當中,我們首先需要檢查被點擊的是哪個 View。我們只設置了一種點擊監(jiān)聽機制,但應用程序之后可能需要處理多種 View 點擊。在方法本體當中,檢查已經通過的 View 參數(shù)是否就是我們引用到變量當中的按鈕:

 if(v.getId()==theButton.getId()){ 
    //the button was clicked 
}

這是一個條件語句(之后我們再來詳細討論其具體結構),用于檢查被點擊的 View 是否擁有與我們的變量相同的 ID。如果這部分內容得到執(zhí)行,我們就能斷定確實是經過設置的按鈕受到點擊。如果交互元素只有這一個,那么測試過程似乎沒什么必要;但大家可以想象當應用中的可點擊元素越來越多時,我們必然要在 onClick 執(zhí)行時判斷被觸發(fā)的到底是哪一個。

第三步

在 onClick 中的 if 條件部分,我們可以對按鈕點擊操作做出響應。響應取決于該按鈕在實際應用中的作用,不過在此次示例中,我們只是為了演示整個過程。添加以下代碼:

theButton.setText("Ouch");

這里我們只需簡單在按鈕被點擊后改變其上顯示的文本內容。現(xiàn)在大家的 onClick 方法應該如下所示:

  public void onClick(View v){ 
    //respond to click 
    if(v.getId()==theButton.getId()){ 
        //the button was clicked 
        theButton.setText("Ouch"); 
    } 
} 

下圖為我們在虛擬設備上點擊該按鈕后的效果。以后我們將討論如何讓應用程序運行在物理及虛擬設備之上,但現(xiàn)在大家只需觀察響應結果即可。

http://wiki.jikexueyuan.com/project/android-sdk/images/4.png" alt="" />

5. 替代方案與選項

第一步

我們已經演示了一種在 Android 上處理按鈕點擊的方法,但方法絕不止這一種。值得關注的另一種替代方案是將下列屬于添加到 XML 布局中的 Button 內:

android:onClick="buttonClicked" 

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

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

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

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

第二步

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

總結

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

原文鏈接:http://mobile.tutsplus.com/tutorials/android/android-sdk-user-interaction/