Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android應用資源的使用方法(數組、顏色、尺寸、字符串、布爾、整數)

Android應用資源的使用方法(數組、顏色、尺寸、字符串、布爾、整數)

編輯:關於Android編程

一、Android中資源分類詳解

1、Android資源分類

Android中的資源分為兩大類 : 可直接訪問的資源, 無法直接訪問的原生資源;

-- 直接訪問資源 : 這些資源可以使用 R. 進行訪問, 都保存在res目錄下, 在編譯的時候, 會自動生成R.java 資源索引文件;

-- 原生資源 : 這些資源存放在assets下, 不能使用 R類 進行訪問, 只能通過 AssetManager 以二進制流形式讀取資源;

2、Android資源詳解

res目錄下資源詳解 :
-- res/animator : 屬性動畫的XML文件目錄, 屬性動畫就是定義起始結束, 動做, 重復時間等參數齊全的動畫;
-- res/anim : 補間動畫的XML文件目錄, 補間動畫是只定義 起始 結束幀, 中間的動作由系統進行計算獲取動作過程;
-- res/color : 顏色列表的XML文件目錄;
-- res/drawable : 存放真實的位圖文件, 也可以存放Drawable對象及子類對象的XML文件;
-- res/layout : 界面布局文件目錄;
-- res/menu : 程序中使用的菜單文件目錄, 該文件下的XML文件可以應用與 選項菜單, 子菜單, 上下文菜單等;
-- res/raw : 存放原生資源, 與assets目錄作用相同, 可以通過調用openRawResource(int)方法獲取二進制輸入流, 與asstes相似, 使用AssetsManager訪問這些資源;
-- res/value : 存放 字符串. 整數, 顏色, 數組 信息的 XML文件的目錄, 這些XML文件資源的根元素是resource;
-- res/xml : 原生的XML文件, 可以使用 Resource.getXML()方法進行訪問;


res/value目錄XML文件子標簽解析 :

-- string標簽 : 代表一個字符串;
-- integer標簽 : 代表一個整數值標簽;
-- bool標簽 : 代表一個boolean值;
-- color標簽 : 代表一個顏色值;
-- array標簽 : 代表數組;
-- string-array標簽 : 代表字符串數組;
-- int-array標簽 : 代表int數組;
-- style標簽 : 代表樣式;
-- dimen標簽 : 代表一個尺寸;

3、分類資源文件 :

如果將所有的資源放到一個XML文件中, 會增加維護難度, 這裡將不通類型的資源放到不同的XML文件下;


-- arrays.xml : 存放數組資源;
-- colors.xml : 存放顏色資源;
-- dimens.xml : 存放尺寸值資源;
-- strings.xml : 存放字符串資源;

-- styles.xml : 存放樣式資源;


二、Android中資源的使用

(1) Java代碼訪問清單資源

在Java代碼中通過R類獲取資源語法 :


[packageName.] R . resourceType . resourceName 

-- pakegeName : R類所在的包名, 即權限定類型, R類可能來自兩個包, 一個是程序本身的清單文件, 一個是Android系統存在的清單文件;

-- resourceType : R類中代表的資源類型的名稱, R.string 字符串資源, R.integer 代表整數資源;

-- resourceName : 資源名稱, 這個資源名稱是對應類型子標簽的 name屬性的值;


(2) Java代碼訪問原生資源

Resource類 : Android資源訪問控制類, 該類提供了大量方法獲取實際資源, Resource通過 Context.getResource()方法獲得;

-- 獲取清單資源 : resource.getString(id), 根據id獲取實際資源;

-- 獲取原生資源 : resource.getassets(), 獲取AssetManager對象;

//獲取Resource資源, 這個方法在Activity中執行  
Resources resources = getResources();  
//獲取字符串資源  
String hello = resources.getString(R.string.hello_world);  
//獲取圖片資源  
Drawable luncher = resources.getDrawable(R.drawable.ic_launcher);  

(3) XML文件中使用資源

在XML文件中需要引用其它XML文件中的值, 語法格式為 :

@ [packageName : ] resourceType / resourceName   

-- packageName : 資源類型所在的包, 如果被引用資源 與 本XML文件在同一個包下, 可以省略包名;

-- resourceType : 資源類型, 例如 layout, drawable, strings等;

-- resourceName : 資源名稱, 資源所在的XML文件中元素的 android:name 屬性, 或者 是無後綴的文件名, 例如圖片, 布局文件等;

三、字符串 顏色 尺寸 數組資源的使用情況

(1) 幾種資源的目錄引用名稱
字符串資源 :
-- 默認目錄 : /res/values/strings.xml ;
-- 引用方式 : R.string.xxx ;


顏色資源 :
-- 默認目錄 : /res/values/colors.xml ;
-- 引用方式 : R.color.xxx ;

尺寸資源 :

-- 默認目錄 : /res/values/dimens.xml ;
-- 引用方式 : R.dimens.xxx ;

PS

顏色定義方式:
三原色 : 白光 可以分解為 紅, 綠, 藍 三種顏色的光, 紅綠藍都是最大值的時候就是白色, 三種值相等, 但不是最大值是灰色, 如果其中一種或兩種值比較大, 就會產生各種顏色的彩色;
顏色表示 : 顏色通過 紅(red) 綠(green) 藍(blue) 三種顏色, 以及 透明度(alpha) 來表示的;
-- 顏色開頭 : 顏色值總是以 # 開頭;
-- 無透明度 : 如果沒有 alpha 值, 默認完全不透明;
顏色定義形式 :
-- #RGB : 紅 綠 藍 三原色值, 每個值分16個等級, 最小為0, 最大為f;
-- #ARGB : 透明度 紅 綠 藍 值, 每個值分16個等級, 最小為0, 最大為f;
-- #RRGGBB : 紅 綠 藍 三原色值, 每個值分 256個等級, 最小為0, 最大為ff;
-- #AARRGGBB : 透明度 紅 綠 藍 值, 每個值分 256個等級, 最小為0, 最大為ff;

(2)字符串 顏色 尺寸 XML文件定義
1) 字符串資源文件
字符串資源文件信息 :
-- 資源位置 : /res/values 目錄下;
-- 根元素 : 是根元素;
-- 子元素 : ;
-- name屬性 : 指定變量名稱;
-- 標簽文本 : 標簽文本就是字符串信息;

  
  
    ResourceTest  
    Settings  
    Hello world!  
  

2) 顏色資源文件
顏色資源文件信息 :
-- 位置 : /res/values目錄;
-- 根元素 : ;
-- 子元素 : ;
-- name屬性 : 顏色資源名稱;
-- 標簽文本 : 顏色值;

  
  
    #FF4000  
    #120A2A  
    #00FF00  
    #FFFF00  
  

3) 尺寸資源文件
尺寸資源信息 :
-- 位置 : /res/values目錄;
-- 根元素 : ;
-- 子元素 : ;
-- name屬性 : 尺寸名稱;
-- 標簽文本 : 尺寸值;

  
      
    16dp  
    16dp  
  

4)數組資源

資源數組文件 : 通常將數組定義在 /res/values/arrays.xml文件中;

-- 根標簽 : ;

-- 子標簽 : , , ;

資源數組類型 : 數組的資源的跟標簽都是 , 不同類型的數組的子元素不同;

-- 普通類型數組 : 使用作為子元素標簽;

-- 字符串數組 : 使用作為子元素標簽;

-- 整數數組 : 使用作為子元素標簽;

XML文件中調用數組資源 : @ [packageName :] array/arrayName ;

Java文件中調用數組資源 : [packageName . ]R.array.arrayName ;

-- 獲取實際普通數組 : TypeArray obtainTypedArray(int id), 根據普通數組資源名稱獲取實際普通數組, TypeArray類提供了getXxx(int index)方法獲取指定索引的元素;

-- 獲取字符串數組 : String[] getStringArray(int id), 根據字符串數組資源名稱獲取字符串數組;

-- 獲取整數數組 : int[] getIntArray(int id), 根據整數數組資源名稱獲取實際的整數數組;

示例 :

colors.xml

  
  
    #F00  
    #0F0  
    #00F  
    #0FF  
    #F0F  
    #FF0  
    #07F  
    #70F  
    #F70  
dimens.xml

  
  
    8dp  
    60dp  
    66dp  
    18sp  
 
strings.xml

  
  
    Hello World, ValuesResTest!  
    字符串,數字,尺寸,數組資源  
    F00  
    0F0  
    00F  
    0FF  
    F0F  
    FF0  
    07F  
    70F  
    F70  
  

arrays.xml

  
  
      
        @color/c1  
        @color/c2  
        @color/c3  
        @color/c4  
        @color/c5  
        @color/c6  
        @color/c7  
        @color/c8  
        @color/c9  
      
      
        @string/c1  
        @string/c2  
        @string/c3  
        @string/c4  
        @string/c5  
        @string/c6  
        @string/c7  
        @string/c8  
        @string/c9  
      
      
        Java  
        Ajax  
        Android  
      
  

主界面xml

  
  
  
      
  
      
      
  
      
      
  

activity

package WangLi.Resources.Values;  
  
import android.app.Activity;  
import android.content.res.Resources;  
import android.content.res.TypedArray;  
import android.os.Bundle;  
import android.view.View;  
import android.view.ViewGroup;  
import android.widget.BaseAdapter;  
import android.widget.GridView;  
import android.widget.TextView;  
  
public class ValuesResTest extends Activity {  
    /** Called when the activity is first created. */  
    String[] texts;  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        texts = getResources().getStringArray(R.array.string_arr);  
        //創建一個BaseAdapter對象  
        BaseAdapter ba = new BaseAdapter()  
        {  
            public int getCount()  
            {  
                return texts.length;  
            }  
              
            public Object getItem(int position)  
            {  
                return texts[position];  
            }  
              
            public long getItemId(int position)  
            {  
                return position;  
            }  
              
            public View getView(int position,View convertView,ViewGroup parent)  
            {  
                TextView text = new TextView(ValuesResTest.this);  
                Resources res = ValuesResTest.this.getResources();  
                //使用尺寸資源來設置文本框的高度,寬度  
                text.setWidth((int)res.getDimension(R.dimen.cell_width));  
                text.setHeight((int)res.getDimension(R.dimen.cell_height));  
                //使用字符串資源設置文本框的內容  
                text.setText(texts[position]);  
                TypedArray icons = res.obtainTypedArray(R.array.plain_arr);  
                //使用顏色資源來設置文本框的背景色  
                text.setBackgroundDrawable(icons.getDrawable(position));  
                text.setTextSize(20);  
                return text;  
            }  
        };  
        GridView grid = (GridView)findViewById(R.id.grid01);  
        grid.setAdapter(ba);  
    }  
}  

PS

最後還要補充的就是還有布爾和整數資源了。

整數資源:

/res/values/integer.xml

  
  
    10  
    20  
 
java代碼
import android.app.Activity;  
import android.content.res.Resources;  
import android.os.Bundle;  
  
public class MainActivity extends Activity {  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
          
        //獲取Resource資源, 這個方法在Activity中執行  
        Resources resources = getResources();  
        int size_1 = resources.getInteger(R.integer.size_1);  
        System.out.println(size_1);  
    }  
}  

布爾資源:

/res/values/bool.xml

  
  
    true  
    false  
  

java代碼:

import android.app.Activity;  
import android.content.res.Resources;  
import android.os.Bundle;  
  
public class MainActivity extends Activity {  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
          
        //獲取Resource資源, 這個方法在Activity中執行  
        Resources resources = getResources();  
        boolean is_true = resources.getBoolean(R.bool.is_true);  
        System.out.println(is_true);  
    }  
}  


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