日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android资源文件在配置文件中的使用

發(fā)布時間:2023/12/18 Android 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android资源文件在配置文件中的使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Android資源文件大致可以分為兩種:

第一種是res目錄下存放的可編譯的資源文件:

這種資源文件系統(tǒng)會在R.Java里面自動生成該資源文件的ID,所以訪問這種資源文件比較簡單,通過R.XXX.ID即可;

第二種是assets目錄下存放的原生資源文件:

因為系統(tǒng)在編譯的時候不會編譯assets下的資源文件,所以我們不能通過R.XXX.ID的方式訪問它們。那我么能不能通過該資源的絕對路徑去訪問它們呢?因為apk安裝之后會放在/data/app/**.apk目錄下,以apk形式存在,asset/res和被綁定在apk里,并不會解壓到/data/data/YourApp目錄下去,所以我們無法直接獲取到assets的絕對路徑,因為它們根本就沒有。

還好android系統(tǒng)為我們提供了一個AssetManager工具類。

查看官方API可知,AssetManager提供對應(yīng)用程序的原始資源文件進行訪問;這個類提供了一個低級別的API,它允許你以簡單的字節(jié)流的形式打開和讀取和應(yīng)用程序綁定在一起的原始資源文件。???

Android除了提供/res目錄存放資源文件外,在/assets目錄也會提供存放資源文件,在/assets目錄下面不會在R.java里面自動生成ID,所以讀取assets目錄下面的資源文件需要提供路徑,我們可以通過AssetManager類來訪問這些文件。

?

assets文件夾資源的訪問

assets文件夾里面的文件都是保持原始的文件格式,需要用AssetManager以字節(jié)流的形式讀取文件。

?? ? ?1. 先在Activity里面調(diào)用getAssets()?來獲取AssetManager引用。

?? ? ?2. 再用AssetManager的open(String fileName, int accessMode)?方法則指定讀取的文件以及訪問模式就能得到輸入流InputStream。?

?? ? ?3. 然后就是用已經(jīng)open file 的inputStream讀取文件,讀取完成后記得inputStream.close()?。

?? ? ?4.調(diào)用AssetManager.close()?關(guān)閉AssetManager。

?

需要注意的是,來自Resources和Assets 中的文件只可以讀取而不能進行寫的操作
以下為從Raw文件中讀取:
代碼

  • public String getFromRaw(){

  • try {

  • InputStreamReader inputReader = new InputStreamReader( getResources().openRawResource(R.raw.test1));

  • BufferedReader bufReader = new BufferedReader(inputReader);

  • String line="";

  • String Result="";

  • while((line = bufReader.readLine()) != null)

  • Result += line;

  • return Result;

  • } catch (Exception e) {

  • e.printStackTrace();

  • }

  • }

  • 以下為直接從assets讀取

  • 代碼

  • public String getFromAssets(String fileName){

  • try {

  • InputStreamReader inputReader = new InputStreamReader( getResources().getAssets().open(fileName) );

  • BufferedReader bufReader = new BufferedReader(inputReader);

  • String line="";

  • String Result="";

  • while((line = bufReader.readLine()) != null)

  • Result += line;

  • return Result;

  • } catch (Exception e) {

  • e.printStackTrace();

  • }

  • }

  • ?

    接下來舉個例子

    我們新建一個工程文件,命名為AssetsDemo。

    ?

    然后建立一個布局文件,如下,很簡單,無需我多介紹,大家一看就明白。

    然后呢,我從網(wǎng)上找了段文字,存放在assets文件目錄下,取名為health.txt 這就是今天我們要讀取的文件啦。

    health.txt可以自己寫點內(nèi)容放進assets文件夾下就可以了。

    接下來,就是今天的重頭戲,Android讀取文件的核心代碼。就直接貼代碼了。

  • package com.assets.cn;

  • import java.io.InputStream;

  • import org.apache.http.util.EncodingUtils;

  • import android.app.Activity;

  • import android.graphics.Color;

  • import android.os.Bundle;

  • import android.widget.TextView;

  • public class AssetsDemoActivity extends Activity {

  • public static final String ENCODING = "UTF-8";

  • TextView tv1;

  • @Override

  • public void onCreate(Bundle savedInstanceState) {

  • super.onCreate(savedInstanceState);

  • setContentView(R.layout.main);

  • ?
  • tv1 = (TextView)findViewById(R.id.tv1);

  • tv1.setTextColor(Color.BLACK);

  • tv1.setTextSize(25.0f);

  • tv1.setText(getFromAssets("health.txt"));

  • }

  • ?
  • //從assets 文件夾中獲取文件并讀取數(shù)據(jù)

  • public String getFromAssets(String fileName){

  • String result = "";

  • try {

  • InputStream in = getResources().getAssets().open(fileName);

  • //獲取文件的字節(jié)數(shù)

  • int lenght = in.available();

  • //創(chuàng)建byte數(shù)組

  • byte[] buffer = new byte[lenght];

  • //將文件中的數(shù)據(jù)讀到byte數(shù)組中

  • in.read(buffer);

  • result = EncodingUtils.getString(buffer, ENCODING);

  • } catch (Exception e) {

  • e.printStackTrace();

  • }

  • return result;

  • }

  • }

  • 一、assets和raw目錄

    1. assets。assets類資源放在工程根目錄的assets子目錄下,它里面保存的是一些原始的文件,可以以任何方式來進行組織。這些文件最終會被原裝不動地打包在apk文件中。如果我們要在程序中訪問這些文件,那么就需要指定文件名來訪問。例如,假設(shè)在assets目錄下有一個名稱為filename的文件,那么就可以使用以下代碼來訪問它:

  • AssetManager?am=?getAssets();????
  • InputStream?is?=?assset.open("filename");??
  • 2、raw。raw是res下的子目錄,?--raw。這類資源以任意格式的文件保存在res/raw目錄下,它們和assets類資源一樣,都是原裝不動地打包在apk文件中的,不過它們會被賦予資源ID,這樣我們就可以在程序中通過ID來訪問它們。例如,假設(shè)在res/raw目錄下有一個名稱為filename的文件,并且它在編譯的過程,被賦予的資源ID為R.raw.filename,那么就可以使用以下代碼來訪問它:

  • Resources?res?=?getResources();??
  • InputStream?is?=?res?.openRawResource(R.raw.filename);??
  • 更詳細信息可參考大牛神作?http://blog.csdn.net/luoshengyang/article/details/8738877

    ?

    二、其中properties資源文件的讀取

    1. 如果放入了assets文件夾中,可以如下打開:?

  • Properties pro = new Properties();

  • InputStream is = context.getAssets().open("test.properties");

  • pro.load(is);

  • 2. 如果放入到raw文件夾中,可以通過如下方式打開:?

    InputStream is = context.getResources().openRawResource(R.raw.test);

    ?

    3. 如果沒有上下文住處,則可用java傳統(tǒng)的方式來打開:

    ? Properties pro = new Properties();

  • pro.load(FileLoad.class.getResourceAsStream("/assets/test.properties")); //或者/res/raw/test.properties

  • 二、從下圖看出四種資源文件的格式與在配置文件中的使用

    1.圖片資源文件前綴名不能使用大寫字母并且不能以數(shù)字開頭

    2.顏色資源文件、尺寸資源文件和字符資源文件所在的目錄都必須是values,并且文件名是固定的,

    ? ?如下圖中示例

    3.顏色資源文件、尺寸資源文件和字符資源文件的內(nèi)容格式如下圖示例

    4.四種資源文件在布局資源文件中的使用如下圖示例, 已經(jīng)可以使用在AndroidManifest.xml文件中

    二、Java代碼操作資源文件

    1.操作資源文件的對象的獲取

    ? ? ?Resources?res?= context.getResources();??(getResources()實現(xiàn)方法是類Context中聲明的方法)

    2.strings.xml資源文件被java代碼操作

    ? /** 第一種

    ? String school =res.getString(R.string.school);// 成都中心大學(xué)

    ? textView.setText(school);

    ? **/

    ? /** 第二種

    ? String school = context.getString(R.string.school);

    ? textView.setText(school);

    ? **/

    ? /**第三種

    ? textView.setText(R.string.school);

    ? */

    3.colors.xml?資源文件被java代碼操作

    ? int myRed =res.getColor(R.color.my_red);?

    ? context.textView.setTextColor(myRed);

    4. dimens.xml資源文件被java代碼操作

    ? float bigSize =?res.getDimension(R.dimen.bigSize);

    ? textView.setTextSize(bigSize);

    ?

    5.圖片資源文件被java代碼操作

    ? (1)設(shè)置LinearLayout的背景

    ? /**第一種

    ? Drawable bc =res.getDrawable(R.drawable.bc);?

    ??linearLayout?.setBackgroundDrawable(bc);//設(shè)置背景圖片

    ? */

    ? /**第二種

    ? ?linearLayout?.setBackgroundResource(R.drawable.bc);

    ?*/

    ? (2)設(shè)置ImageView的src

    ? /**第一種

    ? Drawable bc =?res.getDrawable(R.drawable.xx);

    ??imageView.setImageDrawable(bc);

    ? */

    ? /**第二種

    ? Bitmap bitmap = BitmapFactory.decodeResource(res, R.drawable.xx);

    ??imageView.setImageBitmap(bitmap);

    ? */

    ? /**第三種

    ??imageView.setImageResource(R.drawable.xx);

    ?*/?

    總結(jié)

    以上是生活随笔為你收集整理的Android资源文件在配置文件中的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。