Android Studio訪問資源系統的方法總結

Android的資源文件可以存放在如下的兩個地方:

①可以通過R資源清單類訪問的資源,位於/res/目錄下,Android SDK會處理該目錄下的資源,在R類清單文件中,爲該目錄下的資源生成一個索引項;

在該目錄下存放着大量常用資源:

/res/animator/  :存放定義屬性動畫的XML文件資源。

/res/anim/        :存放定義補間動畫的XML文件資源。

/res/color/        :存放定義不同狀態下顏色列表的XML文件資源 。

/res/drawable/  :存放定義各種位圖文件的XML文件資源,也可以是編譯成的各種對象。

/res/layout/       :存放定義用戶界面佈局的XML文件資源 。

/res/menu/        :存放爲應用程序定義的各種菜單資源的XML文件。

/res/raw/          :存放任意類型的原生資源(比如音頻文件、視頻文件等)。

實際上可以通過調用Resources對象的openRawResources(int id)方法來獲取該資源的二進制輸入流。也可以將這些原生資源放在/assets/目錄下,然後通過AssetManager來訪問。

/res/values/    :存放各種簡單的XML文件(字符串值、整數值、顏色值、數組等)。

/res/xml/       :存放任意原生的XML文件資源,可以通過Resources.getXML( )訪問。

②無法通過R資源清單類訪問的原生資源,位於/assets/目錄下,該目錄下的資源是更徹底的原始資源,Android應用會使用AssetManager來管理該目錄下的原始資源。

爲了通過資源清單項來獲取實際資源,可以藉助於Android提供的Resources類。可以把Resources類理解爲“Android資源的訪問總管家”,Resources類提供了大量的方法來根據資源清單ID獲取實際資源。

Resources類主要提供瞭如下兩類方法:

  (1)getXxx(int id):根據資源清單ID來獲取實際資源;

  (2)getAssets:獲取訪問/assets/目錄下資源的AssetsManager資源管理器對象;

注意:Resources由Context調用getResources( )方法來獲取的。

context.getResources()用法總結:

1.獲取屏幕方向int類型:1:portrait,2:landscape

context.getResources().getConfiguration().orientation;

2、把資源文件放到應用程序的/res/raw下,以openRawResource方法來獲取該資源的二進制輸入流(不帶後綴的資源文件名)打開這個文件:

    //(資源文件名爲index.html, 不需要帶後綴.html)    

    InputStream fs =this.getResources().openRawResource(R.raw.index);

    InputStreamReader read = new InputStreamReader (fs,"utf-8");    

    BufferedReader in = new BufferedReader(read);

3、讀取res/drawable目錄下的png或者bmp

以數據流的方式讀取資源:    

//得到Resources對象    
Resources resource = this.getContext().getResources();  
  
Inputstream is = resource.openRawResource(R.drawable.mm_image);
   
BitmapDrawable bmpDraw = new BitmapDrawable(is);    

Bitmap bmp = bmpDraw.getBitmap();

如果需要利用圖片解碼器,如下使用:

InputStream is = getResources().openRawResource(R.drawable.icon);    

Bitmap mBitmap = BitmapFactory.decodeStream(is);    

Paint mPaint = new Paint();    

canvas.drawBitmap(mBitmap, 40, 40, mPaint);
//獲取屏幕密度

float density = getResources().getDisplayMetrics().density;

4、getDimension、getDimensionPixelOffset和getDimensionPixelSize區別:

  getDimension和getDimensionPixelOffset的功能類似,都是獲取某個dimen的值,但是如果單位是dp或sp,則需要將其乘以density,如果是px,則不用乘density。並且getDimension返回float,getDimensionPixelOffset返回int。而getDimensionPixelSize則不管寫的是dp還是sp還是px,都會乘以denstiy。

調用:Context.getResources().getDimensionPixelSize();

5、Context.getResources().getColor(R.color.colorId);//獲取顏色資源

6、Context.getResources().getString(R.string.stringId);//獲取字符串資源

7、獲取字符串數組:String[] roles = context.getResources().getStringArray(R.array.array_role_values);  

    文件路徑是:\values\array.xml:

<string-array name="array_role_values">

        <item>3</item>

        <item>4</item>

        <item>15</item>

        <item>11</item>

        <item>25</item>

        <item>24</item>

        <item>7</item>

        <item>14</item>

        <item>22</item>

        <item>8</item>

        <item>9</item>

    </string-array>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章