如何以最佳方式将图像包含到android项目中?

发布于 2024-12-11 13:15:55 字数 343 浏览 0 评论 0原文

我的 Android 应用程序基本上是一个简单的应用程序,其中有一个包含 40 个列表项的列表视图。单击这些项目中的每一个都会导致图像。所以有 40 张图像。

当然,我总是可以将这些图像放在 res/drawable 文件夹中,并直接从我的 java 文件引用它们,在这种情况下将完成硬编码

img.setImageResource(R.drawable.day1);
.
.
.
img.setImageResource(R.drawable.day3);
.
.

。 等等。

是否有(例如,通过将图像名称存储在 xml 中)以编程方式从文件夹中检索图像名称并显示它们?

My android app is basically a simple one where there is one listview with 40 list items. And each of those items when clicked leads one to an image. so there are 40 images.

I can always of-course place those images in the res/drawable folder and refer to them directly from my java file in which case there will be hardcoding done

img.setImageResource(R.drawable.day1);
.
.
.
img.setImageResource(R.drawable.day3);
.
.

.
etc.

Is there anyway (by storing the names of the images in an xml for example) to programatically retrieve the image names from folder and display them ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

噩梦成真你也成魔 2024-12-18 13:15:55
int resID = getResources().getIdentifier("day" + i,
    "id", getPackageName());

其中 i 是你的索引

img.setImageResource(resID);
int resID = getResources().getIdentifier("day" + i,
    "id", getPackageName());

where i is your index

img.setImageResource(resID);
栖迟 2024-12-18 13:15:55

使用资源创建动态位​​图对象。

    ImageView image = (ImageView) findViewById(R.id.test_image);
    Bitmap bMap = BitmapFactory.decodeFile("/sdcard/"+"test"+index+".png");
    image.setImageBitmap(bMap);

使用相同的图像名称,例如 image1、image2...
使用 for 循环或索引调用..

Create dynamic bitmap object using resource.

    ImageView image = (ImageView) findViewById(R.id.test_image);
    Bitmap bMap = BitmapFactory.decodeFile("/sdcard/"+"test"+index+".png");
    image.setImageBitmap(bMap);

Used same name of image like, image1,image2...
call using for loop or index..

暮色兮凉城 2024-12-18 13:15:55

我会做什么:

我会将图像放置在 res/drawable 文件夹中,如您所说,但不会像您所说的那样调用它们;太多的工作!尝试创建一个数组“Images”,填充一个 for 循环,在每个位置添加类似以下内容:

for (i;i<x;i++)   //Where x is the number of images you use
     Images[i] = "R.drawable.day"+String.valueOf(i);
     // Even you could try with:
     // Images[i]="img.setImageResource(R.drawable.day"+String.valueOf(i)+")";

像这样,您只需调用 images[i] 即可调用图像“i”

我希望这对您有帮助:)

What I would do:

I'd place the images in the res/drawable folder as you said, but wouldn't call them like you said; too much work! Try creating an array "Images", filled with a for loop where you add on each position something like:

for (i;i<x;i++)   //Where x is the number of images you use
     Images[i] = "R.drawable.day"+String.valueOf(i);
     // Even you could try with:
     // Images[i]="img.setImageResource(R.drawable.day"+String.valueOf(i)+")";

Like this, you just have to call images[i] to call image "i"

I hope this helps you :)

吖咩 2024-12-18 13:15:55

执行此操作的一个简单方法如下:
将图像放置在 res/drawable 中,使用特定模式命名所有图像(例如:img1、img2、img3 ...),然后使用如下名称模式动态加载它们:

String imageName =IMAGE_PATTERN+id;
int imageResource = getResources().getIdentifier(imageName,null,getPackageName());
imageView.setImageDrawable(getResources().getDrawable(imageResource));


IMAGE_PATTERN 可能是“image”或“img”或任何您用来命名文件的名称:)

祝您好运,
阿克德

A simple manner to do this is like this:
You place your images in res/drawable, name all using a certain pattern (for instance: img1, img2, img3 ... ) and after that you load them dynamically using a pattern for names like this:

String imageName =IMAGE_PATTERN+id;
int imageResource = getResources().getIdentifier(imageName,null,getPackageName());
imageView.setImageDrawable(getResources().getDrawable(imageResource));

where
IMAGE_PATTERN may be something like "image" or "img" or whatever you used to name your files :)

good luck,
Arkde

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文