溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Android SDK應(yīng)用程序結(jié)構(gòu)的示例分析

發(fā)布時(shí)間:2021-11-23 09:47:25 來源:億速云 閱讀:119 作者:小新 欄目:移動(dòng)開發(fā)

這篇文章給大家分享的是有關(guān)Android SDK應(yīng)用程序結(jié)構(gòu)的示例分析的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

1. 源

第一步

打開Eclipse并在Package Explorer當(dāng)中查找我們已經(jīng)創(chuàng)建完成的項(xiàng)目。在“src”文件夾里,大家應(yīng)該會(huì)看到設(shè)置項(xiàng)目所命名的項(xiàng)目包。包中應(yīng)該包含我們的Activity類文件,這也是要在編輯器中打開的內(nèi)容。源文件夾保存著我們?cè)陂_發(fā)Android應(yīng)用程序時(shí)所要用到的全部Java文件。

每當(dāng)我們創(chuàng)建一個(gè)項(xiàng)目時(shí),都會(huì)創(chuàng)建一個(gè)用于容納各Java類文件的包。一款應(yīng)用程序可能擁有不止一個(gè)包,而且每個(gè)包當(dāng)中也可能容納著多個(gè)類文件。這些類文件中的處理代碼能夠?qū)⑽覀兊膽?yīng)用呈現(xiàn)給用戶、響應(yīng)用戶的交互操作并執(zhí)行任何的必要處理。從實(shí)質(zhì)上看,類文件是在根據(jù)面向?qū)ο蟾拍钅P蛣澐峙c應(yīng)用程序相關(guān)的代碼。

我們將在后續(xù)文章中進(jìn)一步討論關(guān)于Java的概念以及對(duì)應(yīng)實(shí)踐。在今天的教程內(nèi),大家只需理解一個(gè)Java應(yīng)用會(huì)將各類處理任務(wù)拆分成一定數(shù)量的對(duì)象。每個(gè)對(duì)象都由一個(gè)類聲明來定義,這在應(yīng)用程序中通常是一個(gè)獨(dú)立的文件,不過也可以被嵌套在其它類文件當(dāng)中。一個(gè)對(duì)象基本上就是一大段代碼,其中承載著與應(yīng)用程序相關(guān)的某項(xiàng)功能的一部分。類文件中的代碼能夠引用應(yīng)用程序中的其它類或者應(yīng)用程序中的其它包。

在大家著手進(jìn)行應(yīng)用程序開發(fā)時(shí),首先需要向源文件夾中的包中添加Java類。一個(gè)向用戶提供用戶界面的典型Android應(yīng)用將擁有至少一個(gè)Activity文件,應(yīng)用中的不同屏幕顯示內(nèi)容還要用到更多Activity類。其它一些類型的應(yīng)用,例如工具程序或者服務(wù),則采用不同的結(jié)構(gòu)。大家***首先關(guān)注Activity UI這種類型的應(yīng)用程序,并在熟練掌握之后再接觸其它應(yīng)用類型。

第二步

現(xiàn)在查看新應(yīng)用中的Activity類文件。我們會(huì)在本系列教程的后續(xù)文章中進(jìn)一步探討Activity代碼,因此目前大家不用太過關(guān)注細(xì)節(jié)。今天我們主要面向應(yīng)用中的主Activity,它會(huì)在應(yīng)用啟動(dòng)后同時(shí)開始生效。大家的應(yīng)用也可能會(huì)啟動(dòng)其它一些用于用戶交互的Activity。在我們創(chuàng)建自己的項(xiàng)目時(shí),Eclipse會(huì)對(duì)應(yīng)用進(jìn)行設(shè)置并將主Activity作為主類——它在項(xiàng)目清單當(dāng)中也將被作為主Activity進(jìn)行顯示,我們稍后會(huì)看到。

在主Activity類當(dāng)中,大家會(huì)看到onCreate方法,其中包含的代碼將在Activity被創(chuàng)建——也就是應(yīng)用程序啟動(dòng)時(shí)開始執(zhí)行。在該方法中,大家會(huì)看到以下代碼行:

setContentView(R.layout.activity_main);

在我們啟動(dòng)項(xiàng)目之后,這一行的內(nèi)容用于指定我們所創(chuàng)建的布局文件,告訴Android將其作為內(nèi)容視圖。這意味著無論布局文件中包含什么樣的內(nèi)容,都將在該Activity顯示在屏幕上時(shí)呈現(xiàn)給用戶。

我們將在稍后進(jìn)一步探討相關(guān)話題,目前暫時(shí)需要將注意力集中在“R.layout.activity_main”語法上。這就是我們的Java代碼引用應(yīng)用程序資源的方式。我們將利用類似的語法通過資源的ID值對(duì)其進(jìn)行引用,例如圖片及數(shù)據(jù)值等資源也可以通過這種方式實(shí)現(xiàn)引用。其中的“R”代表應(yīng)用資源,后面的部分則用于指定保存在“res/layout”目錄下的條目類型——在這里就是布局。這些資源最終要根據(jù)其名稱進(jìn)行識(shí)別——對(duì)于示例中的布局,使用的就是文件名。由此推斷,我們要使用的語法就成了“R.type.name”。在我們開始編程之后,各位就會(huì)開始使用該語法。

在本系列的后續(xù)文章中,我們將向Activity類文件中添加代碼以實(shí)現(xiàn)用戶交互?,F(xiàn)在打開應(yīng)用中的“res”文件夾,大家會(huì)在其中找到多個(gè)子文件夾。這些文件夾是由Eclipse與ADT在我們啟用新Android項(xiàng)目后默認(rèn)創(chuàng)建而成的,不過我們可能還需要為不同類型的資源添加其它一些目錄。

2. 布局資源

正如我們已經(jīng)看到,項(xiàng)目創(chuàng)建后所生成的布局文件會(huì)保存在“res/layout”文件夾中。如果某款應(yīng)用擁有多個(gè)Activity屏幕,那么一般會(huì)為每個(gè)屏幕保留一個(gè)獨(dú)立的布局文件。大家可能還會(huì)將布局文件用于個(gè)別UI條目。當(dāng)大家為Activity創(chuàng)建類文件時(shí),需要如上所述利用setContentView進(jìn)行布局設(shè)置。除此之外,大家也可以通過Java代碼進(jìn)行布局設(shè)置——這算是種備選方案。在我們的示例中,布局設(shè)置是在應(yīng)用執(zhí)行時(shí)動(dòng)態(tài)生成的。不過利用XML的優(yōu)勢(shì)在于,我們可以在界面設(shè)計(jì)工作中直觀感受布局方案的視覺效果。

在應(yīng)用程序的主布局文件當(dāng)中(現(xiàn)在應(yīng)該已經(jīng)用編輯器打開了),大家會(huì)看到XML結(jié)構(gòu)。如果各位之前沒有接觸過XML也不必?fù)?dān)心,我們會(huì)在后續(xù)文章中進(jìn)一步討論這些基礎(chǔ)知識(shí)。就目前來說,大家只需了解:XML是一種標(biāo)記語言,類似于HTML——如果之前接觸過Web開發(fā)的話。XML文件利用樹狀結(jié)構(gòu)作為數(shù)據(jù)模型。通常來說,一個(gè)布局文件擁有一個(gè)根布局元素,并將其作為特定布局類型模型——其中所包含的用于UI條目的子元素則包括按鈕、圖片及文本等。

3. 可繪制資源

大家在資源目錄下應(yīng)該會(huì)看到多個(gè)在名稱中包含“drawable”字樣的文件夾,這些文件夾用于保存應(yīng)用程序所使用的圖片文件。這些圖片文件可以是我們?cè)贓clipse之外所準(zhǔn)備的數(shù)字圖片文件,格式包括PNG或者JPEG等?;蛘?,大家也可以通過XML代碼來描述形狀、顏色以及外觀,從而定義特定可繪制資源。一旦我們?cè)赿rawable文件夾中創(chuàng)建了文件,就可以在應(yīng)用布局文件或者Java代碼中進(jìn)行引用。這樣一來,之前準(zhǔn)備好的視覺元素就能用于應(yīng)用UI了。

資源目錄中會(huì)保留針對(duì)每一種密度桶的drawable文件夾。這些密度桶是各類運(yùn)行Android系統(tǒng)的設(shè)備在像素密度方面的通用型分類依據(jù)。具體類別分為低、中、高、超高與超超高密度四種。只需從對(duì)應(yīng)類型中作出選擇,我們就可以在密度桶的幫助下輕松簡(jiǎn)化多屏幕密度的支持過程。這意味著當(dāng)我們?cè)陧?xiàng)目中包含圖片文件時(shí),可以將其放置在不同密度的文件夾當(dāng)中,并通過裁剪提供滿足各種密度方案的版本。

4. 數(shù)據(jù)資源

在“res”目錄中,我們會(huì)看到一些標(biāo)題中帶有“values”字樣的文件夾。這些文件夾用于容納大家希望在應(yīng)用程序中所使用的數(shù)據(jù)值。這些值可以包含文本字符串以及數(shù)字。包含XML文件的值文件夾會(huì)列出其中的一項(xiàng)或者多項(xiàng)值。每份列表都包含一個(gè)名稱以及內(nèi)容中的值。應(yīng)用中的其它文件,例如Java類或者布局文件,能夠通過這些名稱為引用這些值。在典型用例中,我們能夠需要通過這些保存在文本字符串的值在UI元素當(dāng)中顯示內(nèi)容——例如按鈕。

應(yīng)用程序中的不同值文件允許大家針對(duì)特定屏幕尺寸及API級(jí)別對(duì)值進(jìn)行修改。如果同樣的值足以應(yīng)對(duì)多川設(shè)備,則可以被直接保存在“Values”文件夾內(nèi)。

5. 清單

在查看應(yīng)用程序中的主文件夾時(shí),大家一定會(huì)發(fā)現(xiàn)項(xiàng)目的清單文件。通過雙擊即可利用編輯器將其打開。接下來,我們會(huì)看到一個(gè)顯示其內(nèi)容的圖形界面。點(diǎn)擊編輯器窗口底部的“AndroidManifest.xml”標(biāo)簽來查看其XML代碼。這個(gè)文件將應(yīng)用程序的各個(gè)方面定義成統(tǒng)一整體。Eclipse與ADT會(huì)在我們創(chuàng)建應(yīng)用的同時(shí),在清單中創(chuàng)建特定元素,具體創(chuàng)建方式取決于大家在項(xiàng)目創(chuàng)建過程中的設(shè)置。大家可以手動(dòng)向清單中添加其它元素,例如添加其它Activity。

我們將運(yùn)行其中的一部分主元素,旨在理解清單的作用,不過還有其它多種元素可以被包含其中。在清單中所列舉的新應(yīng)用項(xiàng)目元素當(dāng)中,我們將看到uses-sdk元素,我們利用它表示最小及目標(biāo)API級(jí)別。Application元素中包含指向啟動(dòng)機(jī)制與應(yīng)用程序名稱的屬性。在application元素中還存在著一個(gè)activity元素,會(huì)在應(yīng)用程序開始運(yùn)行時(shí)通過intent-filter元素作為主Activity啟動(dòng)。當(dāng)我們向應(yīng)用中添加新的Activity時(shí),則會(huì)為每個(gè)相關(guān)元素添加新的activity元素。

大家可能還需要向清單中添加其它元素,其中包括uses-permission元素,用于羅列應(yīng)用所要求的權(quán)限——用戶會(huì)在安裝應(yīng)用之前觀看到該列表。權(quán)限中包含多種操作條目,例如通過互聯(lián)網(wǎng)獲取數(shù)據(jù)、寫入存儲(chǔ)或者訪問設(shè)備上的其它功能——如相機(jī)。清單還會(huì)列舉應(yīng)用程序所能支持的設(shè)備類型以及其它一些應(yīng)用程序組件(例如后臺(tái)服務(wù))。

6. 其它文件

講到這里,我們已經(jīng)談到了大家需要了解的Android應(yīng)用程序項(xiàng)目結(jié)構(gòu)中的各大主要方面。隨著對(duì)Android開發(fā)的學(xué)習(xí),大家將在今后經(jīng)常與這些內(nèi)容打交道。通過Eclipse,我們還會(huì)看到項(xiàng)目中包含的其它一些文件及目錄,不過就目前來說基本都可以直接忽略。

正如在前面看到的,大家可以利用“R.”語法實(shí)現(xiàn)資源引用。Eclipse以及管理系統(tǒng)的ADT都會(huì)引用應(yīng)用中來自Java的資源。當(dāng)大家在項(xiàng)目中對(duì)這些資源進(jìn)行添加或者編輯時(shí),Eclipse會(huì)將對(duì)應(yīng)內(nèi)容寫入“R.java”文件,從而幫助我們利用“R.”進(jìn)行資源引用。當(dāng)大家開始處理自己的Java文件,會(huì)在引用時(shí)看到Eclipse彈出的提示信息——這種機(jī)制能簡(jiǎn)化對(duì)應(yīng)用資源的管理工作?!癛.java”文件被保存在“gen”文件夾中。請(qǐng)注意:千萬不要嘗試直接編輯這個(gè)文件,它會(huì)在我們編輯項(xiàng)目資源時(shí)自動(dòng)生成。系統(tǒng)會(huì)通過為應(yīng)用中的每項(xiàng)資源分配惟一整數(shù)ID的形式管理這一過程。

提示:當(dāng)大家開始嘗試Android應(yīng)用程序開發(fā)時(shí),可能會(huì)在使用R時(shí)遇到問題。如果Eclipse顯示任何與R相關(guān)的錯(cuò)誤信息,特別是“R無法被解析為一個(gè)變量”,則需要檢查類文件的起始內(nèi)容,看看其中是否存在“R”的導(dǎo)入語句,例如“import android.R;”。如果找到了對(duì)應(yīng)內(nèi)容,特別是在已經(jīng)將代碼復(fù)制并粘貼到文件中后,請(qǐng)刪除這一導(dǎo)入語句。如果遇到其它與R相關(guān)的提示,請(qǐng)確保資源文件當(dāng)中不存在錯(cuò)誤。如果問題仍然存在,嘗試?yán)谩癙roject”,“Clean”清理項(xiàng)目。當(dāng)一切努力皆告失敗時(shí),試著重新啟動(dòng)Eclipse。

感謝各位的閱讀!關(guān)于“Android SDK應(yīng)用程序結(jié)構(gòu)的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI