如何随机化imageViews中图像的位置

时间:2014-01-06 16:41:12

标签: android random imageview

public class MainActivity extends Activity {

private int [] layouts = {
        R.id.imageView1,
        R.id.imageView2,
        R.id.imageView3,
        R.id.imageView4,
};

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

    Button button = (Button) findViewById(R.id.button1);
    button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            int i = layouts.length;
            Random r = new Random();



            while (--i > 0) {

                int j = r.nextInt(i + 1);

                //swap values
                int temp = layouts[j];
                layouts[j] = layouts[i];
                layouts[i] = temp;


            }

            ImageView iv = (ImageView) findViewById(layouts[i]);
            iv.setImageResource(layouts[i]);

            }


    });


}




@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

我有这4个图像视图。我想要的是当我按下按钮时,他们的位置将随机改变.ex。 1,2,3,4变为2,3,1,4或4,3,2,1之类的东西。当我尝试运行我的代码时,图像只是1消失1.当我运行时,4个图像变为3,当我按下按钮时,它变为2,依此类推,直到它们全部消失。有人能帮我吗?

1 个答案:

答案 0 :(得分:0)

您需要两个阵列。

一个包含ImageView Ids:

private int [] layouts = {
        R.id.imageView1,
        R.id.imageView2,
        R.id.imageView3,
        R.id.imageView4,
};  

另一个包含图片drawables:

private int [] drawables = {
        R.drawable.your_image1,
        R.drawable.your_image2,
        R.drawable.your_image3,
        R.drawable.your_image4,
};

像你一样交换布局数组的值(假设你的算法有效)。

然后将layoutable的每个数组项分配给layouts数组中的每个ImageView:

ImageView iv;
for(i = 0; i < layouts.length; i++){
    iv = (ImageView) findViewById(layouts[i]);
    iv.setImageResource(drawables[i]);
}