我正在开发一种“ Candy Crush”,我需要的是当您打开应用程序时,元素(宝石)是随机生成的。 在xml中,我创建了一个8x8“ GridLayout”,它将存储6个ImageView,其中每个ImageView都是一个gem。我当时想做的是,以某种方式从.java通过8x8矩阵,将元素随机加载到GridLayout中。但是我只是不知道该怎么做。如果您能帮助我,我将不胜感激,我已经被困在这里两天了。谢谢。
public class MainActivity extends AppCompatActivity {
private int [] vector = new int[]{R.drawable.blue, R.drawable.green,R.drawable.yellow,R.drawable.red,R.drawable.purple,R.drawable.orange};
private int num=6;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int matriz[][] = new int[8][8];
GridLayout grid = (GridLayout) findViewById(R.id.grid);
int numOfCol = grid.getColumnCount();
int numOfRow = grid.getRowCount();
for (int x = 0; x <= numOfCol; x++) {
for (int y = 0; y <= numOfRow; y++) {
int numero = (int) (Math.random() * num) + 1;
grid.addView(grid, matriz[x][y]);
}
}
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:columnCount="8"
android:rowCount="8"
android:orientation="horizontal"
android:background="#053b13"
android:id="@+id/grid"
>
<ImageView
android:id="@+id/blue"
android:src="@drawable/blue"
android:layout_width="70dp"
android:layout_height="44dp"
android:onClick="gemas">
</ImageView>
<ImageView
android:id="@+id/green"
android:src="@drawable/green"
android:layout_width="70dp"
android:layout_height="44dp"
android:onClick="gemas">
</ImageView>
<ImageView
android:id="@+id/orange"
android:src="@drawable/orange"
android:layout_width="70dp"
android:layout_height="44dp"
android:onClick="gemas">
</ImageView>
<ImageView
android:id="@+id/purple"
android:src="@drawable/purple"
android:layout_width="70dp"
android:layout_height="44dp"
android:onClick="gemas">
</ImageView>
<ImageView
android:id="@+id/yellow"
android:src="@drawable/yellow"
android:layout_width="70dp"
android:layout_height="44dp"
android:onClick="gemas">
</ImageView>
<ImageView
android:id="@+id/red"
android:src="@drawable/red"
android:layout_width="70dp"
android:layout_height="44dp"
android:onClick="gemas">
</ImageView>
答案 0 :(得分:1)
Java代码
Random rnd = new Random();
for(int c=0; i<grid.getChildCount();i++){
int bg = vector[ rnd.nextInt(vector.length) ];
grid.getChildAt(c).setBackgroundResource(bg);
}
注意:我用Kotlin编写了该代码,并且Java代码来自内存。如果发现错误,请发表评论。
科特琳代码:
val vector = intArrayOf(
R.mipmap.ic_launcher,
R.mipmap.ic_launcher_round
)
for (c in 0 until grid.childCount) {
grid.getChildAt(c).backgroundResource = vector[Random.nextInt(vector.size)]
}
结果