編輯:關於Android編程
介紹
在系列教程中的最新一篇裡,我們將研究大家最可能在第一個開發項目中涉及到的資源類型。項目資源當中包含布局、圖片以及數據值,這些都是應用需要使用的元素。當我們創建一個新項目時,項目目錄下會自動生成多個用於容納通用資源類型的文件夾。如果需要,大家還可以添加更多文件夾以擴展資源類型數量。
大家可以通過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元素中添加其它元素來定義圖形屬性。首先定義一個梯度:
我們需要定義梯度的類型、角度外加起點、終點以及中央的顏色。在gradient元素完成後,我們再添加一些圓角:
下面添加筆觸:
當我們在編輯器中輸入內容時,會看到Eclipse提示的可用元素與屬性類型。在完成本教程之後,大家可以用一段時間來嘗試它們對效果的影響。我們將在下一步驟中將創建好的圖形用在UI當中。現在保存可繪制文件。
提示:要在應用程序內使用Eclipse之外所准備的數字圖片文件,大家只需直接將其復制到工作區目錄下對應的可繪制文件夾當中即可。在文件向資源文件夾的復制過程結束後,大家可能需要刷新Eclipse視圖——即在Package Explorer中選擇對應項目,右皺起擊或者選擇“File”,然後選擇“Refresh”。這樣我們就能在應用程序代碼中引用這些圖片文件了。
3. 布局資源
第一步
我們先回顧一下之前文章在設計應用程序用戶界面時,其中所涉及的布局知識。先來看布局文件與可繪制交互。我們可以在布局當中將可繪制資源作為View或者特定View的背景加以顯示。首先列出我們已經創建完成的圖形可繪制資源,並將其作為現有View的背景。打開應用程序的主布局文件,將圖形可繪制資源作為我們之前添加的按鈕的背景圖案。為Button元素添加以下屬性:
我們利用資源類型與名稱(即我們為可繪制資源設定的文件名)將其引用到布局當中。請注意,這與我們之前用於引用字符串值的語法形式是一樣的。保存並切換到Graphical Layout標簽,查看圖形是否已經成為按鈕背景。大家可能會注意到,按鈕還需要一點填充調整。現在切換回XML編輯模式並為Button元素添加填充屬性:
重新切換回Graphical Layout標簽並查看實際效果。
第二步
現在讓我們在專用View中使用圖形可繪制資源。將以下代碼添加到布局中的Button元素內:
我們設置ImageView來填滿除了邊界之外的空間。大家也可以選擇為其設置固定長度與寬度來達到同樣的效果。請注意,Eclipse會顯示警告,因為我們還沒有為其添加內容描述屬性。現在開始著手進行,打開我們的“res/values”字符串XML文件並添加以下內容:
現在大家可以將該字符串添加到布局文件下的ImageView當中:
如大家所見,資源的使用需要在項目中的不同文件之間來回切換,同時使用標准語法模式實現對不同資源條目的引用。現在再次切換以查看圖形預覽效果。
大家可以使用圖中所示的控件進行放大與縮小。
4. 其它資源類型
到目前為止,我們已經在應用程序當中使用了三種資源類型:布局、可繪制與值。其實可以在應用中使用的資源類型還有很多,只需通過前面介紹的方法加以引用即可。正如我們在本系列之前的文章中所提到,大家還可以利用以下語法引用Java文件中的資源:
讓我們簡要總結一下將來可能會用在應用程序當中的其它資源類型。在之前的文章和本文的前面幾個章節,我們已經使用了可繪制與布局資源。字符串值也出現在布局文件當中。現在在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(清單)文件。
Service概念及用途:Android中的服務,它與Activity不同,它是不能與用戶交互的,不能自己啟動的,運行在後台的程序,如果我們退出應用時,Service進程
<uses-permission android:name="android.permission.CALL_PHONE"/><us
這篇博客講解一下在Android中使用Notification提示消息給用戶,Notification是一種具有全局效果的通知,程序一般通過NotificationMan
本文實例講述了Android上下文菜單用法。分享給大家供大家參考。具體如下:上下文菜單不同於選項菜單,選項菜單服務於Activity,而上下文菜單則是注冊到某個View對