日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
AndroidSDK上手指南:用戶交互

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

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、網(wǎng)頁(yè)空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、芷江網(wǎng)站維護(hù)、網(wǎng)站推廣。

大家可以在Android當(dāng)中以多種不同方式實(shí)現(xiàn)用戶交互。我們將學(xué)習(xí)兩種最為典型的處理方案,從而實(shí)現(xiàn)應(yīng)用按鈕對(duì)用戶點(diǎn)擊的感應(yīng)——兩種方案都會(huì)用到一點(diǎn)XML代碼以及Java實(shí)施流程。Android當(dāng)中包含幾種不同的交互UI元素,足以感應(yīng)來(lái)自用戶的各類輸入操作。輸入操作的處理方式必須與UI項(xiàng)相匹配,但整個(gè)過(guò)程仍然大體相同。我們將以一個(gè)按鈕為起點(diǎn)開(kāi)始探索Android平臺(tái)上的用戶交互,因?yàn)榘粹o無(wú)疑是最簡(jiǎn)單也最常用的界面元素。

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

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

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

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

2.識(shí)別UI元素

第一步

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

 
 
 
  1. android:id="@+id/myButton"

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

第二步

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

 
 
 
  1. public class MainActivity extends Activity {

添加變量聲明:

 
 
 
  1. private Button theButton;

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

第三步

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

 
 
 
  1. setContentView(R.layout.activity_main);

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

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

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

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

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

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

3.監(jiān)聽(tīng)事件

第一步

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

 
 
 
  1. public class MainActivity extends Activity implements OnClickListener {

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

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

第二步

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

 
 
 
  1. theButton.setOnClickListener(this);

這一行命令應(yīng)用程序監(jiān)聽(tīng)Button上的點(diǎn)擊操作。括號(hào)中的“this”指定處理點(diǎn)擊操作的對(duì)象。在本文的示例中,該對(duì)象指代Activity類運(yùn)行實(shí)例本身。

4.響應(yīng)事件

第一步

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

 
 
 
  1. theButton.setOnClickListener(this);

添加以下方法概要:

 
 
 
  1. public void onClick(View v){
  2.         //respond to click
  3. }

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

第二步

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

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

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

第三步

在onClick中的if條件部分,我們可以對(duì)按鈕點(diǎn)擊操作做出響應(yīng)。響應(yīng)取決于該按鈕在實(shí)際應(yīng)用中的作用,不過(guò)在此次示例中,我們只是為了演示整個(gè)過(guò)程。添加以下代碼:

 
 
 
  1. theButton.setText("Ouch");

這里我們只需簡(jiǎn)單在按鈕被點(diǎn)擊后改變其上顯示的文本內(nèi)容?,F(xiàn)在大家的onClick方法應(yīng)該如下所示:

 
 
 
  1.   public void onClick(View v){
  2.     //respond to click
  3.     if(v.getId()==theButton.getId()){
  4.         //the button was clicked
  5.         theButton.setText("Ouch");
  6.     }
  7. }

下圖為我們?cè)谔摂M設(shè)備上點(diǎn)擊該按鈕后的效果。以后我們將討論如何讓應(yīng)用程序運(yùn)行在物理及虛擬設(shè)備之上,但現(xiàn)在大家只需觀察響應(yīng)結(jié)果即可。

5. 替代方案與選項(xiàng)

第一步

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

 
 
 
  1. android:onClick="buttonClicked"

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

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

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

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

第二步

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

總結(jié)

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


網(wǎng)站題目:AndroidSDK上手指南:用戶交互
網(wǎng)站路徑:http://m.5511xx.com/article/cccsoss.html