如何用随机图像填充gridLayout 8x8

时间:2019-04-27 18:12:01

标签: java android

我正在开发一种“ 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>

1 个答案:

答案 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)]

}

结果

3x3 grid