Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android中引用資源文件

Android中引用資源文件

編輯:關於Android編程

值文件是Android應用必需的資源文件,其承擔著應用的UI配置和文字顯示工作。值文件包括字符串文件、字符串數組文件、配置文件、整數數組文件、維度文件、屬性文件、顏色文件、風格文件、主題文件、標識符文件等,其中英文目錄為res\values,簡體中文目錄為res\values-zh-rCN,繁體中文目錄為res\values-zh-rTW,其命名規范遵循ISO639-2和ISO3166MA標准,其命名格式為:
values-<語言>-<方言>

1. 字符串

1.字符串資源的定義方法

res/values/strings.xml

字符串是最常用的值資源,其常用的設置方法如下:


    From
    All day

如果該字符串資源不必本地化,則需要設置其translatable屬性為 false,具體如下:


2

除了name屬性外,另一個需要注意的屬性是msgid。msgid屬性通常用於框架層,在應用層不需顯式聲明。

在Android中,特定的符號,如Nont中的“′”,無法直接在字符串資源中設置,開發者必須通過轉義字符的方式進行顯示。

在加載資源的過程中,會以資源的ID為線索進行加載。Android不允許在同一名字空間中出現相同的ID。

2.對字符串資源的引用

在Android中,資源分系統資源和應用資源兩種,這兩種資源在應用中引用的方式略有差異。系統資源並不全部對應用層開放,對應用層開放的系統資源在frameworks\base\core\res\res\values\目錄下的public.xml中定義。不對應用層開放的系統資源的加載方式如下:
getString(com.android.internal.R.string. using);
//采用”@ com.android.internal.R./…”方式

除字符串資源以外的其他系統資源的加載方式和加載字符串資源類似,後面就不再詳述其他類型的系統資源的加載了。

1.引用應用本身的字符串資源

1. 在XML配置文件中

2. 在Java文件中

//采用“R.string.***”方式
test.setText(R.string.hello_activity_text_text);

2.引用框架層的字符串資源

1.在XML配置文件中

2.在Java文件中

//采用“android .R.string.***”方式
test.setText(android.R.string.cancel);

3.數據交換

對於復雜的字符串數據,出於方便設計的考慮,Android支持XLIFF (XML Localization Interchange File Format)和通配符。

在一個字符串標簽中Android僅支持一個通配符,其應用方法如下:
test "%1"

在Java中加載通配符的方法如下:
test.setText(getString(R.string.hello).replace("%1",
String.valueOf(curPage)));

Android對XLIFF的支持的實現也非常簡單。以ANR為例,其字符串資源如下:
Process id="process">%1$s is not responding.
XLIFF的名字空間為xmlns:xliff=”urn:oasis:names:tc:xliff:document:1.2”。

在Java中加載字符串的方法如下:
//采用的加載方法為getString (resId, formatArgs)
res.getString(com.android.internal.R.string.anr_process,
name1.toString(), name2.toString());

(3)下畫線的實現

在Android中,文字特效目前僅支持加粗和斜體兩種,如果希望實現加下畫線的功能,則需要借助HTML語法,實現方法如下:
textView.setText(Html.fromHtml(““+helloStr+”“));

(4)語言切換的實現

語言的切換是通過資源管理器進行的,方法如下:
Resources resources = getResources();
Configuration config = resources.getConfiguration();
DisplayMetrics dm = resources .getDisplayMetrics();
config.locale = Locale.SIMPLIFIED_CHINESE;
resources.updateConfiguration(config, dm);

通過類似的設置,開發者也可以切換屏幕密度、MCC、MNC、屏幕方向等,當然部分設置可能需要高級別的權限。

2. 字符串數組

1.字符串數組的定義

字符串數組通常用於下拉框等場景。如果不希望該字符串數組隨著語言環境的變化而變化,可以將字符串數組的translatable屬性設為false,方法如下:


    "0"
    "1"
    "2"

2.字符串數組的加載

1.在XML配置文件中

    

2.在Java中

ArrayAdapter adapter = ArrayAdapter.createFromResource(
   this, R.array.colors, android.R.layout.simple_spinner_item);
   //采用“R.array.***”方式

3. 整數數組

1.整數數組的定義

整數數組和字符串數組的使用方法類似,下面是整數數組的實現:


    0
    10
    20
    30

2.整數數組的加載

1.在XML配置文件中

2.在Java中

int[]  tmpArray =
getResources().getIntArray(com.android.internal.R.array.config_virtualKeyVibePattern);

4. 配置文件

1.配置文件的定義

配置文件在應用開發中並不常用,通常用於應用的設置等場景,配置文件的實現如下:


    false
    150

2.配置文件的加載

1.在XML配置文件中

2.在Java中

mLimitedAlphaCompositing = context.getResources().getBoolean(
       com.android.internal.R.bool.config_sf_limitedAlpha); //采用“R. bool.***”方式

5. 維度文件

維度文件的實現也非常簡單,示例如下:

84dp
63dp

在Java中維度文件的加載方式如下:
Int w =
getResources().getDimensionPixelSize(com.android.internal.R.dimen.thumbnail_width);

6. 屬性文件

1.屬性文件的定義

res/values/attrs.xml

在Android中,屬性文件通常由多個標簽(如declare-styleable、eat-comment、attr)組成。

declare-styleable標簽用於聲明一個屬性組,一個屬性組可以由多個屬性構成。在如下代碼中,declare-styleable聲明標簽名為Animation的屬性組。


  ...

eat-comment標簽用於聲明標簽上的內容為注釋。

attr標簽用於聲明屬性。一個屬性包括屬性名和屬性格式兩部分。示例:

      
     
     

目前,Android支持的常用屬性格式包括:

屬性格式 涵義 reference 對資源的引用 color 顏色 float   integer   fraction   boolean 布爾 dimension   string  

需要注意的是,Android允許屬性支持多種屬性格式。下面是background屬性的實現示例:

由上述示例可以看出,background屬性既可加載配置文件,又可直接設置ARGB值。

為屬性配置偏好值的方法如下:


    
    
    

偏好值的實現分為enum、flag兩種類型,其中flag表示以二進制方式表示偏好值。

2.屬性文件的加載

2.在JAVA中

TypedArray a = context.obtainStyledAttributes(attrs,
com.android.internal.R.styleable.Animation);
...
a.recycle(); //用於隨後的復用

7. 顏色文件

顏色的設置文件通常會放在框架層的資源目錄中。對顏色屬性進行引用而不是在應用層顯式聲明,有利於在系統層面保持UI的一致性。在顏色的聲明中,采用的是ARGB的格式。

1.顏色的定義


    #00ffffff
    #ffffffff

2.顏色的加載

1.在XML配置文件中

2.在JAVA中

//采用“ R.color.***”方式
setBackgroundColor(getResources().getColor(R.color.candidate_background));

另外,在Android中,Google提供了多種系統顏色定義,如primary_text_dark、primary_text_light、white、black、transparent等。

8. 風格文件

一個好的應用除了技術上應設計得優雅外(即代碼具有高的可讀性、可擴展性、復用性、性能),用戶體驗也非常重要(包括文字的用語和觀感、圖片的觀感和交互設計)。風格的設計決定了用戶體驗中文字和圖片的效果。風格文件的設置方法如下:

 

2.風格文件的加載

1.在XML配置文件中

9. 主題文件

主題文件在框架層比較常用。對於進行差異化工作的廠商而言,保持同一個主題是一個基本的UI需求,定義統一的風格文件供公司所有產品引用,是個不錯的選擇,示例如下:

2.主題文件的加載

1.XML配置文件中


風格和主題的設計看似簡單,實際上涉及的維度很多,既要考慮到用戶的視覺感受,又要照顧不同層次、不同地區用戶的文化差異。如何在考慮這些要素的基礎上將需要的信息以一種統一、簡潔、優雅的方式呈現出來,挑戰很大,通常需要UI、UE工程師具備多年的積累和深厚的文化底蘊。

10. 標識符文件

標識符文件對於應用層開發者來說並不常見,但這並不意味著開發者完全接觸不到,在使用系統提供的ListView、Tab等就會涉及。標識符文件的實現方式如下。


  
  
  

在實際的開發中,經常需要自定義Tab的布局,這時候必須聲明tabhost、tabcontent、tabs等控件ID為系統ID,方法如下:


    
        
        <framelayout android:id="@android:id/tabcontent" android:layout_height="0dip" android:layout_weight="1" android:layout_width="match_parent">
    </framelayout>

對於自定義列表的布局,必須聲明ListView的控件ID為系統ID,方法如下:

<framelayout android:layout_height="match_parent" android:layout_width="match_parent" xmlns:android="http://schemas.android.com/apk/res/android">
    
 ...
</framelayout>
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved