Android SDK簡明教程:應用程式資源
介紹
在系列教程中的最新一篇裡,我們將研究大家最可能在第一個開發專案中涉及到的資源型別。專案資源當中包含佈局、圖片以及資料值,這些都是應用需要使用的元素。當我們建立一個新專案時,專案目錄下會自動生成多個用於容納通用資源型別的資料夾。如果需要,大家還可以新增更多資料夾以擴充套件資源型別數量。
大家可以通過Package Explorer瀏覽“res”資料夾當中的內容,這些就是我們之前在建立專案時所使用的資源。開啟資料夾、看看裡面都藏著哪些寶貝。大家還可以在資源目錄下新增更多新資料夾,也可以在各資料夾中新增新檔案,或者是直接使用現有檔案(例如我們在前幾篇系列文章中所使用的佈局與字元值檔案)。
1. 備用資源
在我們正式開始之前,首先指出一點注意事項——大家可以將自己的Android資源劃分為兩大類:一種是能夠被跨裝置使用的資源,另一種則是針對裝置特定子集的資源。大家可以在現有專案結構中發現二者的例項。在Eclipse Package Explorer當中,檢視“res”目錄。請記住,不同的可繪製資料夾對應著特定裝置螢幕畫素密度。在今天的文章中,我們打算使用非特定可繪製檔案(即能夠跨裝置使用的資源)。
大家可以通過類別限定的方式為每種資源型別新增備用目錄。在Eclipse當中,這代表著“drawable-hdpi”、“drawable-xhdpi”等不同型別。Android平臺支援多種使用者裝置分類方式,其中包括螢幕尺寸、畫素密度、API級別、語言以及區域等等。任何在名稱中不包含型別限定的資源型別資料夾都能夠實現跨裝置使用。大家並不一定需要為所有資源型別都設定類別限定資料夾,但當我們針對不同裝置進行應用測試時,可能需要在不同配置之間做出一些細微調整。
2. 可繪製資源
第一步
我們都知道,Eclipse會建立多個可繪製資料夾,每一個都針對一種特定的密度桶。可繪製資料夾當中包含我們在應用程式中所使用的任何圖片。大家可以在Eclipse之外準備一些數字格式的圖片,例如JPEG、PNG以及GIF。大家還可以利用XML程式碼定義可繪製資源。下面我們就著手嘗試,並將其新增到主佈局當中。
儘管大家應該嘗試針對各種特定畫素密度建立可繪製資源,但由於本教程的篇幅所限,今天我們姑且使用適應所有裝置的單一可繪製方案。在Eclipse Package Explorer當中選擇“res”資料夾,選擇“File”或者右鍵點選該資料夾->選擇“New”->“Folder”來建立一個新資料夾。將該資料夾命名為“drawable”然後點選“Finish”完成建立。
無論何時,只要我們需要在專案當中建立新資料夾,都可以遵循以上流程。
第二步
現在我們新建的可繪製資料夾應該已經與其它原有可繪製資料夾一道,顯示在Package Explorer當中了。正如我們之前所提到,如果某個資料夾並不針對特定裝置子集(即由畫素密度分類或者API級別加以定義),那麼大家完全可以隨意置換其中的資源並將其用於任何使用者裝置。因此,無論我們向新的可繪製資料夾當中新增什麼內容,其都會顯示在所有使用者裝置之上。對於大部分可繪製資源來說,我們最需要注意的就是其不同畫素密度版本;不過為了簡單起見,我們將在今天的文章中使用這個新資料夾。
在Package Explorer當中選中我們的新建可繪製資料夾、右鍵點選或者選擇“File”、而後選擇“New”以及“Android XML File”,從而在資料夾中建立一個新檔案。這時Eclipse會彈出新檔案的建立導航。Android支援多種不同的可繪製檔案型別。今天我們要建立的是一個圖形可繪製檔案,並利用其中所包含的不同圖形及外觀實現標記的目的。大家可以點選此處,通過開發者指南瞭解其它可繪製型別。
在頂部的下拉選單中,我們可以選擇資源的具體型別——由於我們是在可繪製資料夾中建立新檔案的,所以Eclipse會自動選中“drawable”。接下來是專案下拉選單,同時應該自動填入我們所選擇的專案。然後是在文字輸入框內為檔案命名——輸入“nice_shape.xml”。輸入框下方是我們可以選擇的根元素列表。下滾並選擇“shape”,因為我們打算定義的是圖形可繪製資源。最後點選“Finish”,Eclipse會建立新檔案並在編輯器中開啟。
第三步
在圖形可繪製物件中,大家可以選擇一系列通用圖形類別,其中包括矩形、橢圓、線條和圓環。選擇了圖形類別之後,我們就可以對其具體屬性加以定義,例如實心或者漸變顏色、邊角、填充、尺寸以及筆觸等。我們通過以下程式碼編輯根shape元素,從而獲得一個矩形:
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > </shape>
大家接下來可以通過在根shape元素中新增其它元素來定義圖形屬性。首先定義一個梯度:
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <gradient android:angle="270" android:centerColor="#FFFFFF00" android:endColor="#FF0000FF" android:startColor="#FFFF0000" android:type="linear" /> </shape>
我們需要定義梯度的型別、角度外加起點、終點以及中央的顏色。在gradient元素完成後,我們再新增一些圓角:
<corners android:radius="10dp" />
下面新增筆觸:
<stroke android:width="2dp" android:color="#FF339966" />
當我們在編輯器中輸入內容時,會看到Eclipse提示的可用元素與屬性型別。在完成本教程之後,大家可以用一段時間來嘗試它們對效果的影響。我們將在下一步驟中將建立好的圖形用在UI當中。現在儲存可繪製檔案。
提示:要在應用程式內使用Eclipse之外所準備的數字圖片檔案,大家只需直接將其複製到工作區目錄下對應的可繪製資料夾當中即可。在檔案向資原始檔夾的複製過程結束後,大家可能需要重新整理Eclipse檢視——即在Package Explorer中選擇對應專案,右皺起擊或者選擇“File”,然後選擇“Refresh”。這樣我們就能在應用程式程式碼中引用這些圖片檔案了。
3. 佈局資源
第一步
我們先回顧一下之前文章在設計應用程式使用者介面時,其中所涉及的佈局知識。先來看佈局檔案與可繪製互動。我們可以在佈局當中將可繪製資源作為View或者特定View的背景加以顯示。首先列出我們已經建立完成的圖形可繪製資源,並將其作為現有View的背景。開啟應用程式的主佈局檔案,將圖形可繪製資源作為我們之前新增的按鈕的背景圖案。為Button元素新增以下屬性:
android:background="@drawable/nice_shape"
我們利用資源型別與名稱(即我們為可繪製資源設定的檔名)將其引用到佈局當中。請注意,這與我們之前用於引用字串值的語法形式是一樣的。儲存並切換到Graphical Layout標籤,檢視圖形是否已經成為按鈕背景。大家可能會注意到,按鈕還需要一點填充調整。現在切換回XML編輯模式併為Button元素新增填充屬性:
android:padding="5dp"
重新切換回Graphical Layout標籤並檢視實際效果。
第二步
現在讓我們在專用View中使用圖形可繪製資源。將以下程式碼新增到佈局中的Button元素內:
<ImageView android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_margin="10dp" android:src="@drawable/nice_shape" />
我們設定ImageView來填滿除了邊界之外的空間。大家也可以選擇為其設定固定長度與寬度來達到同樣的效果。請注意,Eclipse會顯示警告,因為我們還沒有為其新增內容描述屬性。現在開始著手進行,開啟我們的“res/values”字串XML檔案並新增以下內容:
<string name="pic">Picture</string>
現在大家可以將該字串新增到佈局檔案下的ImageView當中:
android:contentDescription="@string/pic"
如大家所見,資源的使用需要在專案中的不同檔案之間來回切換,同時使用標準語法模式實現對不同資源條目的引用。現在再次切換以檢視圖形預覽效果。
大家可以使用圖中所示的控制元件進行放大與縮小。
4. 其它資源型別
到目前為止,我們已經在應用程式當中使用了三種資源型別:佈局、可繪製與值。其實可以在應用中使用的資源型別還有很多,只需通過前面介紹的方法加以引用即可。正如我們在本系列之前的文章中所提到,大家還可以利用以下語法引用Java檔案中的資源:
//R.type.name .string.pic//example
讓我們簡要總結一下將來可能會用在應用程式當中的其它資源型別。在之前的文章和本文的前面幾個章節,我們已經使用了可繪製與佈局資源。字串值也出現在佈局檔案當中。現在在Package Explorer當中開啟“values”資料夾,除了字串檔案之外,Eclipse通常還會新增一個尺寸檔案和一個樣式檔案。在樣式檔案內,大家可以定義外觀屬性從而與應用程式的UI風格保持一致。而在“dimens”檔案中,大家可以定義應用程式所使用的尺寸值。
如我們之前所提到,大家可以通過限定機制為特定裝置屬性建立備用資源型別資料夾。如大家所見,Eclipse會針對特定API級別建立值資料夾,但我們也可以利用其它一些限定手段實現對特定裝置的支援。舉例來說,大家可能希望在我們所新增的ImageView當中使用固定寬高尺寸,從而使顯示大小與裝置螢幕尺寸完美契合。為了實現這一點,大家可以新增值資料夾及其中的尺寸檔案來匹配各種尺寸或者畫素密度桶(例如‘-small’、‘-large’、‘-hdpi’、‘-mdpi’等等)。通過在每個檔案當中包含尺寸值,並在相同的值名稱之下使用不同數字,Android系統將自動選擇最適合使用者裝置的方案。
大家可能需要用到的其它資源型別還包括數字、選單、動畫以及顏色值。Eclipse通常會在我們建立一個應用程式之後為其建立一個選單資料夾,現在請大家開啟該資料夾看看其中的內容。要定義XML動畫,大家可以向“res”目錄中新增一個“anim”或者“animator”資料夾,也可以直接將動畫檔案新增到可繪製資料夾當中——具體方式取決於我們所使用的實際動畫型別。
如果大家希望在應用程式UI中使用一組顏色,則可以在儲存於值目錄下的檔案中對color元素進行定義。每個color元素都可以包含一個HEX值與一個名稱屬性,這樣我們就可以在其它檔案當中引用這些顏色了。至於那些無法被歸於任何一種Android定義類別的XML資源,大家可以將其儲存在“res”目錄下的“xml”資料夾當中。
要對Android當中的全部資源型別擁有透徹瞭解,大家可以檢視開發者指南當中的“資源型別”與“更多資源型別”兩個章節。雖然在學習的起步階段最好只接觸比較淺顯的內容,但這些資料仍然值得大家認真閱讀,從而為今後的開發工作奠定良好的知識基礎。
提示:當大家參閱Android專案例項或者開發者指南時,經常會在其中發現一些經常被資源使用的標準檔名。不過檔名本身其實可以隨意選擇——只要大家使用正確的資料夾名稱與元素,這樣應用程式程式碼就可以通過識別系統訪問所有資源。除此之外,堅持使用傳統檔名可以讓我們的應用程式更加清晰且便於理解,特別是對於值資料夾來說。
總結
在今天的文章中,我們瞭解了Android系統當中關於應用程式資源的基礎知識。不過正如之前所提到,還有很多未知領域等等著我們去探索。對於大家的第一款應用,各位只需要使用相對簡單的方案幫助自己習慣資源的使用方法即可。但隨著我們在應用開發方面的不斷成長,大家應該嘗試思考各類使用者裝置在執行我們應用時可能面臨的情況,併為其提供必要的額外資源。在本系列教程的下一部分中,我們將一同瞭解專案的Manifest(清單)檔案。
相關文章
- Android SDK簡明教程:應用程式資料Android
- Android SDK簡明教程:應用程式結構Android
- Android應用資源Android
- Android SDK簡明教程:專案清單Android
- Android 極簡反射教程及應用示例Android反射
- Android SDK簡明教程:使用者互動Android
- 簡明 docker 教程Docker
- Android資源混淆工具使用說明Android
- 【開源】GreaterWMS 抖音SDK呼叫教程
- [譯] 在 Android 應用中使用向量資源Android
- 簡明 Python 教程Python
- Android應用及應用管理簡介Android
- 簡單的Cloud Toolkit教程,助你秒部署應用程式Cloud
- 【Android開發入門教程】二.Android應用程式結構分析Android
- GitBook簡明安裝教程Git
- 簡明 MongoDB 入門教程MongoDB
- 簡明Python 教程 --模組Python
- Android studio 減少應用大小,刪除無用資源Android
- AssetHook:Android應用資源資料執行時編輯工具HookAndroid
- Android Jetpack - Android TV 應用開發教程AndroidJetpack
- 提取應用程式中的圖示資源 (轉)
- Android ExpandableListView的簡單應用AndroidView
- 程式碼家:簡明資料庫史資料庫
- 最簡明的Shiro教程
- 《簡明 PHP 教程》00 開篇PHP
- 《簡明 PHP 教程》04 基礎PHP
- 《簡明 PHP 教程》02 安裝PHP
- Raspberry Pi 3簡明配置教程
- iOS Core Animation 簡明系列教程iOS
- Android Studio 真正國內SDK線上更新說明Android
- MySQL全文索引應用簡明教程MySql索引
- MySQL 全文索引應用簡明教程MySql索引
- Android P DP3釋出:SDK/API敲定、應用適AndroidAPI
- mssql sqlserver updatetext關鍵字應用簡介說明SQLServer
- Android應用程式完全退出Android
- 明確應用程式型別與資料庫結構設計型別資料庫
- 用PHP編寫Android應用程式PHPAndroid
- 《簡明 PHP 教程》01 關於 PHPPHP