Android资源访问机制--getResource()

在开发当中需要引用程序资源,如工程之中assets和res目录下的图片、layout、values等或者需要系统内置的资源。

获取Resources的过程:

(1)将framework/framework-res.apk和应用资源apk装载为Resources对象。

(2)获取Resources对象

获取Resources对象有两种方式,第一种通过Context,第二种通过PackageManager。

一. 通过Context来获取getResource对象
1.在一个Acitvity或者一个Service中,我们直接this.getResources()方法,就可以获得Reousrces对象。其实Acitivity或者Service本质上就是一个Context,getResources()方法来自Context,而真正实现Context接口是ContextImpl类,所以调用的实际上时ContextImpl类的getResources()方法。

2.引用XML文件时,可以通过:
—getResources().getXml()获的XML原始文件,然后再得到XmlResourceParser对象
—XmlResourceParser xrp = mRes.getXml(R.xml.personal);

例如:ds.setColor(getResources().getColor(R.color.text_blue_color));
利用R….可以指定文件夹下面的某个xml文件进行加载使用

3、其它的一些文件读取方法
a、把资源文件放到应用程序的/raw/raw下,那么就可以在应用中使用getResources获取资源后,
以openRawResource方法(不带后缀的资源文件名)打开这个文件

Resources myResources = getResources();    
InputStream myFile = myResources.openRawResource(R.raw.xx_filename);

与普通java程序一样,android提供了openFileInput和openFileOutput方法来读取设备上的文件

InputStream fs =this.getResources().openRawResource(R.raw.index.htm); (资源文件名为index.html, 不需要带后缀.htm)    
InputStreamReader read = new InputStreamReader (fs,"utf-8");    
BufferedReader in = new BufferedReader(read);

b、读取res/drawable目录下的png或者bmp

//得到Resources对象    
Resources r = this.getContext().getResources();    
//以数据流的方式读取资源    
Inputstream is = r.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);

你可能感兴趣的:(Android资源访问机制--getResource())