《Android UI基础教程》——1.2节Android 应用程序的基本结构
本節(jié)書摘來(lái)自異步社區(qū)《Android UI基礎(chǔ)教程》一書中的第1章,第1.2節(jié)Android 應(yīng)用程序的基本結(jié)構(gòu),作者 【美】Jason Ostrander,更多章節(jié)內(nèi)容可以訪問(wèn)云棲社區(qū)“異步社區(qū)”公眾號(hào)查看
1.2 Android 應(yīng)用程序的基本結(jié)構(gòu)
Android UI基礎(chǔ)教程
在開始一個(gè)Android項(xiàng)目時(shí),Eclipse IDE已經(jīng)為你創(chuàng)建了一個(gè)初始的工程結(jié)構(gòu)。這個(gè)工程包含你需要用來(lái)構(gòu)建應(yīng)用程序的所有所需元素,你也應(yīng)把所有的工作內(nèi)容放置于這個(gè)工程中。盡管可以創(chuàng)建一個(gè)應(yīng)用程序之間的代碼共享的庫(kù)工程,但對(duì)于絕大多數(shù)應(yīng)用程序來(lái)說(shuō),并沒(méi)有這個(gè)必要。本節(jié)將會(huì)介紹基本的工程文件夾結(jié)構(gòu)以及應(yīng)該在哪里放置代碼、布局文件和素材。
1.2.1 文件夾結(jié)構(gòu)
對(duì)在Package Explorer的示例工程文件夾的基礎(chǔ)上進(jìn)行擴(kuò)展,并仔細(xì)觀察工程結(jié)構(gòu)。Android使用的是標(biāo)準(zhǔn)的Java應(yīng)用程序的布局。表1.1總結(jié)了工程結(jié)構(gòu)。
1.2.2 Android Manifest
Android manifest包括應(yīng)用程序的結(jié)構(gòu)和功能的所有信息。它包括應(yīng)用程序所使用的所有活動(dòng)、所提供的服務(wù)、任何通過(guò)內(nèi)容提供商可訪問(wèn)的數(shù)據(jù)庫(kù)內(nèi)容以及它處理的任何意圖。
在該manifest中你可以聲明應(yīng)用要正常運(yùn)行所需的硬件功能。舉個(gè)例子,如果應(yīng)用需要觸屏設(shè)備才能夠正常運(yùn)轉(zhuǎn),那么在manifest中需要包括進(jìn)下面這行:
`<uses-feature android:name=``"``android.hardware.touchscreen``"` `→ ``android:required=``"``true``"`` />`按照應(yīng)用所需來(lái)聲明硬件功能使得Android Market可以根據(jù)用戶的硬件配置來(lái)合理地篩選應(yīng)用。這樣沒(méi)有觸屏手機(jī)的用戶就不會(huì)下載到要求有觸摸屏才能正常運(yùn)行的應(yīng)用。
你應(yīng)該努力使應(yīng)用程序盡可能廣泛地兼容。列出應(yīng)用需要使用的功能,通過(guò)代碼來(lái)動(dòng)態(tài)決定它們的可用性并使得降低用戶體驗(yàn)的方式盡可能保持優(yōu)雅。
在該manifest中你同樣要聲明應(yīng)用所需使用的權(quán)限。與硬件要求不同,所有運(yùn)行應(yīng)用所需的權(quán)限聲明都必須包括在manifest中。不存在有可選的聲明。
注意: 用戶對(duì)于要求權(quán)限過(guò)于寬泛的應(yīng)用毫不留情。尤其是對(duì)于那些要求位置信息的應(yīng)用。仔細(xì)考慮應(yīng)用的權(quán)限需求,不要請(qǐng)求多余的權(quán)限。
應(yīng)用程序使用的圖標(biāo)和標(biāo)簽也要在manifest中聲明。你可以把這些屬性賦給manifest中的許多XML元素。最重要的是頂層的<application>元素。它決定應(yīng)用程序?qū)⑷绾卧谥鹘缑嬉约皯?yīng)用頁(yè)展示。然而,圖標(biāo)/標(biāo)簽的組合并不只是適用于<application>元素。你可以把它們應(yīng)用于權(quán)限元素之上,這將會(huì)在用戶確認(rèn)安裝應(yīng)用程序時(shí)展示出來(lái)。你也可以把它們置于<activity>元素,用戶將會(huì)在進(jìn)程監(jiān)視器中看到它們。這些元素能夠被任何子組件繼承。因此,如果已經(jīng)設(shè)置好<application>圖標(biāo)和標(biāo)簽,但是<activity>和<intent>的圖標(biāo)和標(biāo)簽并沒(méi)有設(shè)置,那么這些元素將會(huì)默認(rèn)使用<application>的圖標(biāo)和標(biāo)簽。此設(shè)置允許你使用特定組件的圖標(biāo)和標(biāo)簽來(lái)告知用戶應(yīng)用程序的功能。
最后,manifest是聲明所支持的Android API版本的地方。正確地聲明API級(jí)別很重要,因?yàn)閲L試引用不支持的API將會(huì)導(dǎo)致你的應(yīng)用程序崩潰。這也能很好地防止應(yīng)用程序被安裝于未測(cè)試過(guò)的新的API版本。表1.2列出了更多關(guān)于API級(jí)別的信息。
1.2.3 資源
Android應(yīng)用在res/文件夾中存儲(chǔ)所有的資源。什么是資源?基本上,所有不是Java代碼的都是資源。圖像、布局文件、應(yīng)用程序字符串、局部字符串、主題甚至動(dòng)畫都放在res/文件夾中。Android使用目錄結(jié)構(gòu)來(lái)隔離資源使得在不同設(shè)備配置上都能使用。在Hello World應(yīng)用中,有3個(gè)drawable文件夾:drawable-ldpi、drawable-mdpi和 drawable-hdpi,分別代表低、中、高密度的資源。運(yùn)行時(shí),Android系統(tǒng)會(huì)基于設(shè)備硬件選擇合適的資源。如果沒(méi)有資源能夠匹配,它將會(huì)選擇最接近的匹配資源。在第3章中對(duì)此將會(huì)有深入講解。
在布局中使用的常量值都放置在res/values/文件夾下。你應(yīng)當(dāng)把所有的顏色、尺寸規(guī)格、風(fēng)格以及字符串放置在此文件夾中。在示例的Hello World應(yīng)用中,有一個(gè)單個(gè)的strings.xml文件包含所有的應(yīng)用中用戶可見的字符:
`<?xml version=``"``1.0``"`` encoding=``"``utf-8``"``?>` `<resources>` ` <string name=``"``hello``"``>Hello World, ExampleActivity!</string>` ` `` `` <string name=``"``app`_`name``"``>Example</string>` `</resources>`你不能使用Java代碼或者XML布局文件中的字符串常量。任何用戶可見的字符串都需要在strings.xml文件中聲明。這使得你的資源隨后進(jìn)行本地化更加容易。在應(yīng)用中可通過(guò)字符串元素的名稱屬性引用這些字符串。
res/layout/文件夾也包含聲明應(yīng)用程序布局的XML文件。Android UI可以通過(guò)XML或者Java代碼創(chuàng)建。推薦使用XML構(gòu)建布局,因?yàn)樗軌蚝芎玫匕裊I和應(yīng)用邏輯分離開。不同的文件夾名代表不同的布局文件,以適配不同配置的設(shè)備。
總結(jié)
以上是生活随笔為你收集整理的《Android UI基础教程》——1.2节Android 应用程序的基本结构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 《编写可测试的JavaScript代码》
- 下一篇: 总结一些常用Android adb 命令