Android的 - 我怎么能动态加载可绘(图片)?不知道,直到运行时的名字 [英] Android - how can I dynamically load drawables (pictures)? Names not known until run-time

查看:105
本文介绍了Android的 - 我怎么能动态加载可绘(图片)?不知道,直到运行时的名字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经搜索谷歌和这个网站很多次,但无法找到解决我的问题。

首先,我明白了,你可以加载使用类似的图像:

  INT图像= R.drawable.icon; (假设有一个名为icon.png在文件)
 

和我已经知道了,并尝试使用:

  getResources()则getIdentifier(resname,restype,com.example.whatever)。
 

不过,这里就是我不能这样做: 我希望能够在/ RES /绘制文件夹(我相信这是正确的文件夹)的照片,不知道任何文件的名称,并动态加载它们 - 在运行时

一(的许多)事情我已经试过是(像):

  INT []的图像=新INT [numberOfImages]
为(0〜numberOfImages)
{
    图像[I] =
        getResources()则getIdentifier(resname,restype,com.example.whatever)。
}
 

这将返回0每一次,所以它不是去上班

我想获得每一个画面的名称和整数标识符在/ RES /可绘制文件夹。可以这样做不知道任何文件的名称吗?

----------------------------------------------- -----------------------

[添加此之后,问题得到了解决,以帮助任何人都可能会遇到在未来同样的问题。这只是表明,它实际上是工作。]

 类资源= R.drawable.class;
    现场[]字段= resources.getFields();
    的String [] imageName =新的String [fields.length]
    INT索引= 0;
    对于(场域:域)
    {
        imageName [指数] = field.getName();
        指数++;
    }

    INT结果=
            。getResources()则getIdentifier(imageName [10],可拉伸,com.example.name);
 

解决方案

好吧,如果你必须这样做,使用反射:)

一流的资源= R.drawable.class;
现场[]字段= resources.getFields();
对于(场场:场){
    的System.out.println(field.getName());
}

然而,在某种程度上,你依然是硬编码的东西,因为你只会把一组固定的可绘制在您的应用程序。 :)

I've searched Google and this website many times, but can not find a solution to my question.

First, I understand, you can load images using something like:

int image = R.drawable.icon; (assuming there's a file called 'icon.png')

and I've read about, and tried using:

getResources().getIdentifier("resname", "restype", com.example.whatever);

But, here's what I'm unable to do: I want to be able to have pictures in the /res/drawable folder (I believe that's the correct folder), WITHOUT KNOWING ANY OF THE NAMES OF THE FILES, and load them dynamically - at run-time.

One (of the many) things I've tried is (something like):

int[] images = new int[numberOfImages];
for( 0 to numberOfImages )
{
    images[i] = 
        getResources().getIdentifier("resname", "restype", com.example.whatever);
}

This returns 0 EVERY TIME, so it's not going to work

I'd like to get the name and integer identifier for every picture in the /res/drawables folder. Can this be done WITHOUT KNOWING ANY FILE NAMES?

----------------------------------------------------------------------

[adding this after the question was resolved to help anyone that may run into the same issue in the future. It just shows that it does in fact work.]

    Class resources = R.drawable.class;
    Field[] fields = resources.getFields();
    String[] imageName = new String[fields.length];     
    int index = 0;
    for( Field field : fields )
    {
        imageName[index] = field.getName();
        index++;
    }

    int result = 
            getResources().getIdentifier(imageName[10], "drawable", "com.example.name");

解决方案

Well, if you have to do it, use reflection :)

Class resources = R.drawable.class;
Field[] fields = resources.getFields();
for (Field field : fields) {
    System.out.println(field.getName());
}

However, in a way, you are still hard-coding stuff, since you will only be putting a fixed set of drawables in your app. :)

这篇关于Android的 - 我怎么能动态加载可绘(图片)?不知道,直到运行时的名字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆