我的 /res
文件夹中有图像资源,例如拇指。现在,我有 30 个拇指,我现在启动数组的操作是:
Drawable[] thumbs = new Drawable[30];
thumbs[0] = context.getResources().getDrawable(R.drawable.thumb_01);
thumbs[1] = context.getResources().getDrawable(R.drawable.thumb_02);
thumbs[2] = context.getResources().getDrawable(R.drawable.thumb_03);
//this way 27 times more
有没有办法以某种方式循环这个而不创建一个长数组?
最佳答案
我希望我正确理解你的问题。如果是这样,我正在开发的应用程序中也有非常相似的情况。您可以做的是声明一个 Drawable 数组,并在循环访问资源中的每个“拇指”时将每个新的 Drawable 添加到该数组中。我认为拇指的数量是有限的,因为您是从资源中检索它们的。如果是这种情况,您还可以在包含拇指的文件中指定有多少个拇指。
//assume you assign the number of thumbs to integer 'R.integer.numberofthumbs'
int numberOfThumbs = context.getResources().getInteger(R.integer.numberofthumbs);
Drawable[] thumbs = new Drawable[numberOfThumbs];
for(int i = 0; i < numberOfThumbs; i++){
thumbs[i]= getResources().getDrawable(getResources().getIdentifier("thumb_" + i, "drawable", getPackageName()));
}
这本质上是我在代码中使用的方法,并且效果很好。由于 for 循环中的命名,标有 10 以下数字的拇指必须没有前导零。但是,可以轻松更改它以适合您当前的命名方法。希望我没有离得太远,这确实有帮助。
干杯
关于java - 将字符串解析为资源名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20983935/