我正在编写益智游戏来学习开发Android应用程序.但现在我仍然坚持如何动态地将图像添加到布局文件中的ImageViews(见下文).我正在尝试创建一个循环,我在每个ImageViews中添加一个随机图像.但我找不到任何关于如何做到这一点的例子.我的图像与ImageViews的名称相同,只是小写字母.还是有其他更好的方法来解决这个问题?
我的代码到目前为止:
// Puzzle of 2x2 tiles
String[] sTiles = {"A0","A1","B0","B1"};
final Random myRandom = new Random();
// Random tiles
String tmp = null;
for (int i = 0; i < sTiles.length; ++i) {
tmp = sTiles[i];
int r = myRandom.nextInt(sTiles.length);
sTiles[i] = sTiles[r];
sTiles[r] = tmp;
}
// Lopp to add images randomly to the screen (layout/main.xml)
//for(i=0; i < sTiles.length; ++i) {
ImageView image = (ImageView) findViewById(R.id.B0);
image.setImageResource(R.drawable.a0);
//}
Run Code Online (Sandbox Code Playgroud)
--------------- layout/main.xml ------------
<TableRow>
<ImageView
android:id="@+id/A0"
android:layout_column="1" />
<ImageView
android:id="@+id/A1"
android:gravity="right" />
</TableRow>
<TableRow>
<ImageView
android:id="@+id/B0" />
<ImageView
android:id="@+id/B1" />
</TableRow>
Run Code Online (Sandbox Code Playgroud)
谢谢,西格德!
尝试设置一些int数组来存储drawable和widget ID.它比使用反射更快地按名称查找它们.像这样的东西应该做的伎俩:
int[] imageViews = {
R.id.A0, R.id.A1,
R.id.B0, R.id.B1,
R.id.C0, R.id.C1 //...
};
int[] images = {
R.drawable.a0, R.drawable.a1,
R.drawable.b0, R.drawable.b1,
R.drawable.c0, R.drawable.c1 //...
};
Random random = new Random(System.currentTimeMillis());
for(int v : imageViews) {
ImageView iv = (ImageView)findViewById(v);
iv.setImageResource(images[random.nextInt(images.length - 1)]);
}
Run Code Online (Sandbox Code Playgroud)
如果要确保所有ImageView都获得唯一的图像,您可能需要添加一些特殊处理,但这应该按原样工作.
| 归档时间: |
|
| 查看次数: |
16925 次 |
| 最近记录: |