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