做一些和等级有关的应用时,我们经常需要使用一组图片资源,有以下几种调用方式
一、使用数组
int [] images = [ R.drawable.image1, R.drawable.image2, R.drawable.image3 ];
调用方式:
imageView.setBackgroundResource(images [index]);
优点:最直接高效的实现方案。如果把这些定义独立到一个全局常量文件里修改起来也相当方便。
值得一提的是,如果图片文件仅有有限的几个,该方法无疑是最简单快捷的方法。
缺点:无法故弄玄虚,适合低级程序员。
二、使用array.xml
存放在res/values/array.xml的XML文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="images">
<item>@drawable/image1</item>
<item>@drawable/image2</item>
<item>@drawable/image3</item>
</array>
</resources>
调用方式:
TypedArray typedArray = getResources().obtainTypedArray(R.array.images);
for(int i=0;i<typedArray.length();i++) {
System.out.println(""+typedArray.getResourceId(i, 0));
}
typedArray.recycle();
优点:如果要添加或图片资源,无需修改代码,仅需要修改drawable中的相应图片资源和修改xml中的定义即可。
缺点:中高级程序员才会这么使用
三、使用assets
在assets/images中添加图片文件,格式如image1,png
AssetManager assetManager = getAssets();
try {
InputStream is = assetManager.open("images/image"+index+".png");
<pre name="code" class="java"> Bitmap bitmap = BitmapFactory.decodeStream(is);
is.close(); textView.setBackgroundDrawable(new BitmapDrawable(getResources(), bitmap));} catch (IOException e) { e.printStackTrace();}
优点:如果要添加或图片资源,无需修改代码,仅在assets中修改图片资源即可。
缺点:高级程序员才会想到这么使用