我正在循环一些可绘制的图像(fx。我有一些名为image_1,image_2等的图像)作为片段中的标题图像。随着硬编码可用于我的图像数量,图像随机加载,并生成一个从0到这个数字的随机索引。Android:计数字符串和绘图
mHeaderBackgroundImagesCount
是最后:
private int getHeaderBackground() {
// Random index between 0 and mHeaderBackgroundImagesCount
Random rand = new Random();
int index = rand.nextInt(mHeaderBackgroundImagesCount) + 1;
return getResources()
.getIdentifier("image_" + index, "drawable", getPackageName());
}
由于硬编码什么是不正常的正确程序要走的路,所以我喜欢动态的了解有多少“image_X”可绘有与设置到mHeaderBackgroundImagesCount
。
我想对来自strings.xml
资源文件的字符串做同样的操作,因为我还在每个页面加载中传递一些字符串。
解决方案更新
此更新通过拉利特Poptani的下面建议的启发。它包括语法更正和优化,并且已经过测试。
private int countResources(String prefix, String type) {
long id = -1;
int count = -1;
while (id != 0) {
count++;
id = getResources().getIdentifier(prefix + (count + 1),
type, getPackageName());
}
return count;
}
System.out.println("Drawables counted: " + countResources("image_", "drawable"));
System.out.println("Strings counted: " + countResources("strTitle_", "string"));
注意:此方法假设资源计数开始具有索引1和不具有索引孔像image_1
image_2
<hole>
image_4
等等,因为它会终止ID的第一时刻= 0因此导致有缺陷的计数。
我已经在上面的原始文章中发布了一个修订的过程,它避免了对RANDOM_COUNT的需求。 – Ambran
@Ambran听起来不错,所以最后选择了哪种方法最终在你的代码中使用? –
我已经使用了我上面发布的修订版本,因为使用'while'循环无需声明某个天花板(RANDOM_COUNT)索引,就像'for'循环所需的索引一样。这个想法是一样的,所以非常感谢。 – Ambran