我有一个数组,其中包含我的主java代码所需的几个drawable,我用它来在需要时调用它们:
mImagesArray = new int[]{R.drawable.img_0, R.drawable.img_1, R.drawable.img_2,...,R.drawable.img_m}
这种直接实现方法有效,但想象一下如果我有一个包含+100图像的数组,我会将每个可绘制的值从img_1调用到最终的img_100,这非常令人沮丧。
我需要的是一个函数,它使用由(for i=0;i<m;i++)
定义的增量int i值,所以这个函数看起来比我之前使用的函数简单得多......可能像mImagesArray = new int[]{R.drawable.img_i}
这样的东西?
我希望你理解我的问题,基本上我想要一个只需要mImagesArray元素数量的全套函数。
编辑** mImagesArray用于:
private void drawImage(Canvas canvas) {
//Get the image and resize it
Bitmap image = BitmapFactory.decodeResource(getResources(),
mImagesArray_ar[mImagesArrayIndex]);
//Draw background
// customWallpaperHelper.setBackground(canvas);
//Scale the canvas
PointF mScale = customWallpaperHelper.getCanvasScale(mImageScale, image.getWidth(), image.getHeight());
canvas.scale(mScale.x, mScale.y);
//Draw the image on screen
Point mPos = customWallpaperHelper.getImagePos(mScale, image.getWidth(), image.getHeight());
canvas.drawBitmap(image, mPos.x, mPos.y, null);
}
感谢。
答案 0 :(得分:0)
将此方法添加到您的代码中:
protected final static int getResourceID
(final String resName, final String resType, final Context ctx)
{
final int ResourceID =
ctx.getResources().getIdentifier(resName, resType,
ctx.getApplicationInfo().packageName);
if (ResourceID == 0)
{
throw new IllegalArgumentException
(
"No resource string found with name " + resName
);
}
else
{
return ResourceID;
}
}
并像这样使用它:
int myID =
getResourceID("your_resource_name", "drawable", getApplicationContext());
注意:如果是图像,则没有路径或扩展名。
您甚至不能使用mImagesArray
数组:只需使用int myID = getResourceID("img_" + i, "drawable", getApplicationContext());
,其中 i 是一个整数(与您的数组索引相同的整数)。< / p>
像这样:
Bitmap image =
BitmapFactory.decodeResource(getResources(),
getResourceID("img_" + mImagesArrayIndex, "drawable", getApplicationContext()));
答案 1 :(得分:0)
我建议您只创建一个包含所有可绘制名称的字符串数组,然后从名称中提取drawable。
我的意思是这样说: -
String[] drawables=new String[100]
for(int i=0;i<100;i++)
drawables[i]="img"+i;
然后,当你想要它时,你会得到这样的名字: -
int drawableResourceId = this.getResources().getIdentifier(drawables[i], "drawable", this.getPackageName());
答案 2 :(得分:0)
有同样的问题。
int x,i=0;
While(i<100){
ImageView view = new ImageView(this);
name="img_"+i;
x=getResources().getIdentifier(name, "drawable, getPackageName());
view.setImageResurse(x);
mainActivity.addView(view);
i++;
}