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,依此类推,直到它们全部消失。有人能帮我吗?
答案 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]);
}