如何在android中获取资产图像ID

时间:2013-09-19 07:08:00

标签: android

我需要在ViewPager中设置图像列表。我的资产文件夹中有一个图像列表。我将图像分组到资产内的单独文件夹中,如资产/图像; assets / images1,......现在我需要在int []数组中获取图像的id(比如说images1)。      我在String []数组中得到了images(images1)的名称。如何使用名称获取string []中图像的id。

5 个答案:

答案 0 :(得分:1)

您必须将图像放在可绘制文件夹中才能访问它们。然后,您可以使用此代码从其名称中获取图像的ID ..

 String yourImageName;
 int resID = getResources().getIdentifier(yourImageName, "drawable", "com.example.yourpackegename.");

答案 1 :(得分:0)

在项目的“res /”中创建一个名为“drawable”的文件夹。

假设您有像......这样的图像。

RES /可绘制/图像,图像1,图像2,...

在你的ACTIVITY中,使用R.drawable.image,R.drawable.image1,....来调用它们。

"Now I need to get the id of the images (say images1 alone) in int[] array"

您也可以将它们存储在数组中,并使用“R.drawable.YOUR_IMAGE_NAME”调用它们,

int[] images = {R.drawable.image,R.drawable.image1,R.drawable.image2,R.drawable.image3,....};

希望这有帮助。

答案 2 :(得分:0)

int[] array_images = {
                      R.drawable.image0,
                      R.drawable.image1,
                      R.drawable.image2,
                      R.drawable.image3,
                      R.drawable........,
                      ....
                      };

答案 3 :(得分:0)

通常,“id”仅针对资源文件夹中的图像创建,但不针对资产文件夹中的图像创建。

答案 4 :(得分:-1)

如果您将图像保留在资产中,则必须使用资产管理器对其进行解码。

公共类MainActivity扩展了Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    init();
}

private void init() {
    InputStream is = null;
    ImageView imageView = new ImageView(this);
    ((RelativeLayout)findViewById(R.id.parent)).addView(imageView);
    try {
     is = getAssets().open("ic_launcher.png");//name of image in your asset folder
    } catch (IOException e) {
        e.printStackTrace();
    }

    Bitmap bitmap = BitmapFactory.decodeStream(is);
    imageView.setImageBitmap(bitmap);

         // if you dont want bitmap  you can use drawable

       // Drawable d = Drawable.createFromStream(is, null);
    //imageView.setImageDrawable(d);

}   

}

否则将您的图像保存在res中的drawable文件夹中,并使用R.drawable.imagename

进行使用