【问题标题】:Different image for each round of for loop每轮for循环的不同图像
【发布时间】:2016-09-13 17:25:48
【问题描述】:

我有图像作为资源,文件名是 image1、image2、...等等。我想在轮播中使用这些图像。我可以在轮播中生成相同的图像,但是资源的名称应该在每一轮循环中改变。

代码如下:

    for (int i = 0; i < 4; i++) {
        ImageView imageView = new ImageView(this);
        imageView.setId(i);
        imageView.setPadding(2, 2, 2, 2);
        imageView.setLayoutParams(layoutParams);
        imageView.setImageBitmap(BitmapFactory.decodeResource(
                getResources(), R.drawable.image_01));
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);
        mainHorizLinLayout.addView(imageView);
    }

所以我想用 image_ + i 代替 image_01。我试图创建一个字符串并在 R.drawable.image_01 中使用它,但它不起作用。

有什么想法吗,坦克?

【问题讨论】:

  • R.drawable.image_01 是 ID 的替代品。您可以做的是收集所有图像 id 并将它们放入一个数组中。
  • 假设R.drawable.image_01 == 1111,你保证R.drawable.image_02是1112吗?

标签: android for-loop filenames drawable android-drawable


【解决方案1】:

R.drawable.image_01 不是字符串(ALT + 点击查看R 类)。但是这些整数是有序的,所以你可以这样做:

 imageView.setImageBitmap(BitmapFactory.decodeResource(
            getResources(), R.drawable.image_01 + i));

【讨论】:

    【解决方案2】:

    试试这个方法

    int[] images = {R.drawable.image_01, R.drawable.image_02, R.drawable.image_03, R.drawable.image_04, R.drawable.image_05};
    
    for (int i = 0; i < images.length; i++) {
        ImageView imageView = new ImageView(this);
        imageView.setId(i);
        imageView.setPadding(2, 2, 2, 2);
        imageView.setLayoutParams(layoutParams);
        imageView.setImageBitmap(BitmapFactory.decodeResource(
                    getResources(), images[i]));
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);
        mainHorizLinLayout.addView(imageView);
    }
    

    【讨论】:

      【解决方案3】:

      在我之前建议的一种方法是创建一个包含图像资源 ID 的数组。

      另一种方法是获取所需图像的资源 ID,如下所示:

      int drawableResourceId = this.getResources().getIdentifier("image_" + i, "drawable", this.getPackageName());
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多