gpt4 book ai didi

Android:计算字符串和可绘制对象

转载 作者:行者123 更新时间:2023-11-29 19:33:48 25 4
gpt4 key购买 nike

我正在循环一些可绘制图像(fx。我有一些名为 image_1、image_2 等的图像)作为 fragment 中的标题图像。这些图像是随机加载的,因为我硬编码了可供我使用的图像数量,并生成了一个从 0 到该数字的随机索引。

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 中的字符串做同样的事情资源文件,因为我也在每次页面加载时循环一些字符串。

解决方案更新

此更新的灵感来自 Lalit 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 时终止,从而导致错误计数。

最佳答案

如果您确定您的可绘制对象列表将按 image_1、image_2...等顺序排列,那么您可以应用以下逻辑,

        int count = 0;
int RANDOM_COUNT = 10; //which is more than your drawable count
for (int i = 1; i < RANDOM_COUNT; i++){
int id = getResources().getIdentifier("ic_launcher_"+i,
"drawable", getPackageName());
if(id != 0){
count = + count;
}
else{
break;
}
}
Log.e(TAG, "This is your final count of drawable with image_x - "+ count);

您使用此逻辑是因为将没有任何名称为 image_x 的可绘制对象,然后 id 将为 0,您可以打破循环

关于Android:计算字符串和可绘制对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39511329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com