Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> android 資源和國際化(續一)

android 資源和國際化(續一)

編輯:Android開發實例

資源是外部文件(既非代碼文件),被代碼使用,並且在編譯時被編譯到你的應用程序中,android 支持的資源,包括XML,PNG,JPNG文件,XML文件會由於其所描述的內容不同而形式不同。
       資源從原代碼中被抽取出來,基於效率考慮,XML文件被編譯成二進制、可以快速加載的形式。字符串,同樣被壓縮為一種更富效率的存儲形式。對於android 程序開發,需要它時知道去那裡找這些資源就可以了。
(一)資源
              android 資源系統了解應用程序中所有非代碼資源。使用Resources類訪問程序中的資源。一個應用程序的資源在編譯時被編譯器編譯到應用程序中的二進制文件中,要使用一個資源,你必須把安裝源文件樹中的正確位置,並編譯到你應用程序中,作為編譯過程的一部分,每個資源的標記都會被生成,在原代碼中可要使用這些標記-允許編譯器驗證應用程序中的代碼和定義的資源是否匹配。那如何創建和使用資源呢!
(二)創建資源
             android 支持字符串、位圖以及其他很多中類型的資源。每一種資源的語法、格式以及存放的位置,都會根據其類型的不同而不同。一般來自三種文件:XML(除位圖和raw之外的任何文件)、位圖文件(圖像)以及raw文件(eg:聲音.........),事實上,XML文件也有兩種不同類型:被原封不動地編譯進包內的文件和被aapt 用來產生資源的文件。這裡有一個每種資源類型的列表,包括文件格式、文件描述以及XML文件類型的細節。
       在項目中的res/目錄的適當的子目錄中創建和保存資源文件。Android 有一個資源編譯器(aapt),它依照資源所在的子目錄及其格式對其進行編譯。eg:
   目錄                                                           資源類型
res/anim               XML文件,它被編譯進frame by frame animation或者tweened animation
res/drawable        .png,.jpg文件;問圖文件;9-patches(可邊尺寸的位圖)    被編譯進Drawable 資源自中,使用Resource.getDrawable(id),在這個目錄下也可以創建xxx.xml文件來定義特殊的圖像
例如:app_icon_background.xml
<selector>
<item android:state_selected="true" android:drawable="@drawable/icon_highlight_square"/>
<item android:drawable="@color/transparent"/>
</selector>
res/layout             編譯為屏幕布局(或屏幕的一部分)的XML文件
res/values            array.xml ;color.xml;dimens.xml;strings.xml ;styles.xml
res/xml                  任意的XML文件,在運行時可以通過調用Resources.getXML()讀取。
res/raw                 直接復制到設備中的任意文件。他們無須編譯,添加到應用程序編譯產生的壓縮文件中。調用Resources.openRawResource(),參數是資源的ID,即R.raw.somefilename
       資源被編譯進最終的APK文件中。Android 創建了一個封裝類,叫做R,在代碼中使用他來引用這些資源。R包含了根據資源文件的路徑和名稱命名的子類。
全局資源說明(Global Resource Notes)
1、一些資源允許你定義顏色值。android 接受的顏色值可以使用多種web樣似的形式-以下集中包含十六進制常數的形式:#RGB,#ARGB,#RRGGBB、#AARRGGBB
2、所有顏色之支持設置透明度(alpha channel value),前兩位的十六進制數指定了透明了。0在透明度值是全透明。默認值是不透明。
(三)使用資源
1、代碼中使用資源-如何在你代碼中對調用資源實例化
R.resource_type.resource_name 或 android.R.resource_type.resource_name
2、從其他資源中引用資源-可以從其他資源中應用資源。重用資源中的公共資源。
@[package:]type/name(@[email protected]:drawable/opaque_red)
Context.getResource()獲得與應用程序相關的Resource實例。圖像資源的引用和風格的統一, eg: <application android:name="CalendarApplication"
            android:label="@string/app_label" android:icon="@drawable/app_icon"
            android:taskAffinity="android.task.calendar">
...............
................
.................
</application>
主要是通過android:icon="@drawable/app_icon"中的@drawable/app_icon應用資源,這種技巧還可以創建資源之間的引用。eg:可以創建新的drawable 資源作為已存在資源的別名。
<?xml version = "1.0" encoding = "utf-8"?>
         <resources>
                   <drawable id = "my_background">@android:drawable/theme2_background</drawable>
         </resources>
</xml>
3、支持針對交替配置的交替資源-根據主機硬件的語言或顯示配置指定加載不同的資源。
super.onCreate(icicle);
setContentView(R.layout.main);
這看似很簡短的兩個java 語句,其實要去深刻的理解他的作用,然後在擴展開來,裡面的內容,真的很多,很多,
4、應用主題屬性,另外一種資源允許引用當前主題中的屬性值。這個屬性值只能在樣式資源和XML屬性中使用;他允許你通過將他們改變為當前主題提供的標准化來改變UI元素的外觀,而不是提供具體的值。
引用格式如下:?[namespace:]type/name和“@”,也是可選的!
使用系統資源:android.R.type.id
5、支持對替換(Alternate)語言和配置的替換資源
MyApp/
        res/
        values-en/
         .
         .
         .
         .
         .
         .
Android 支持幾種類型的限定服,每一個都有不同的值。把他們連接在資源文件名稱的後面,使用短橫線(“-”)隔開。可以為每一個文件夾名稱添加多個限定符,但是必須按照這裡列出的順序排列,
eg:
drawable-en-rUS-port-160dpi-finger-qwerty-dpad-480x320/
比較典型的是,你只需指定的要定義資源的配置選項,可以放棄列表中的任何值,但同時要保證生下的值仍然保持列表中的順序
MyApp/
        res/
drawable-en-rUS-finger/
drawable-port/
drawable-port-160dpi
drawable-qwerty
總結:編程要學會歸類,總結,就像資源的分類一樣!   如果心不靜會走火入魔的!-_-

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved