【问题标题】:Android: Loop to pick a random images from ArrayListAndroid:循环从 ArrayList 中选择随机图像
【发布时间】:2013-11-24 23:31:05
【问题描述】:

现在我的程序从我的数组列表中随机显示 5 个随机图像,这是我现在拥有的主要部分:

int myImgCount;
int totalImgCount;
int[] array1;

public void surfaceCreated(SurfaceHolder holder) {

ArrayList<Integer> list = new ArrayList<Integer>();

    Random r = new Random();

    int[] images = new int[] { R.drawable.one, R.drawable.two,
            R.drawable.three, R.drawable.four, R.drawable.five };

    int totalImgCount = 0;


    for (int i = 0; i<50; i++)
    {
        while (true) 
        {
            int myImgCount = r.nextInt(5);

                 totalImgCount += myImgCount + 1;

            if (totalImgCount<50) {

                list.add(images[myImgCount]);   //do it again if not yet at 50
                break;
            }
                   totalImgCount -= (myImgCount + 1);
        }


    }

    array1 = convertIntegers(list);

}

public static int[] convertIntegers(List<Integer> integers) {
    int[] ret = new int[integers.size()];
    Iterator<Integer> iterator = integers.iterator();
    for (int i = 0; i < ret.length; i++) {
        ret[i] = iterator.next().intValue();
    }
    return ret;
}

我的渲染方法出现错误,导致应用崩溃:

public void render(Canvas canvas) {

    if (canvas != null) {

        Log.d(TAG, "Start Random");
        Random random = new Random();
        canvas.drawRGB(234, 237, 235);

        for (int i=0; i<5; i++) {
          Bitmap bmp = BitmapFactory.decodeResource(getResources(), array1[i]);            
       // ^This is where I am now getting an error that is causing the app to crash 

          canvas.drawBitmap(bmp,random.nextInt(canvas.getWidth()-bmp.getWidth
                      ()), random.nextInt(canvas.getHeight()-bmp.getHeight()),null);

        }

    }
}

我要做的是让每个可绘制图像都有一个整数值,例如:R.drawable.one 等于 1,R.drawable.two 等于 2.....R.drawable.five 等于到 5。

并重复循环,直到显示的图像的总值等于 50(它们都加起来为 50),然后停止。

我正在尝试获取 myImgCount 和 totalImgCount 以跟踪随机选择的图像的值,我知道这不正确,但我找不到有关如何完成此任务的任何信息。提前感谢任何可以提供帮助的人,我是编码新手,所以如果你能解释为什么你使用你的代码,它会更有帮助!谢谢!

【问题讨论】:

    标签: java android arrays loops random


    【解决方案1】:

    您可以使用可绘制的命名约定为 R.drawable.image1、R.drawable.image2 并使用

    for(int i=0;i<50;i++) {
      a[i] = getResources().getIdentifier("image"+(i+1), "drawable", getPackageName());
    }
    

    getIdentifier 方法here 的详细信息:

    希望对你有帮助

    【讨论】:

    • 我的问题可能不够清楚,或者我可能误解了您的解决方案,但我没有询问图像名称。我正在尝试创建一个“for”循环来显示图像,直到总数为 50。我试图通过为数组中的每个图像赋予一个值来做到这一点。不过,我真的很感谢您的回复!
    • 那么,你只有 5 张图片对吧?抱歉误解了您的问题...所以您想显示图像直到总数超过 50,对吧?
    • 是的,只有 5 张图片:R.drawable.one、R.drawable.two、R.drawable.three、R.drawable.four 和 R.drawable.five,我希望它们有一个int 值与其名称相同。例如:R.drawable.one 的 int 值为 1。然后我希望我的循环运行并显示随机图像,直到总数为 50。我试图使用 myImgCount 来跟踪总数,但我不能不要让它工作。希望有帮助!再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2017-07-14
    • 2013-03-27
    • 2013-12-24
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 2018-09-11
    • 2015-04-15
    相关资源
    最近更新 更多