Я ищу простой способ сделать двумерный массив значков для настольной игры на Android. Я написал игру в java, но он использует swing, и теперь я пытаюсь переписать его для Android. Я искал все и нашел способы сделать 2-мерный массив, но я не знаю, как заполнить его значками. Любая помощь будет оценена по достоинству. Вот мой код из java, используя swing lib.):
spots = new JButton[15][15];
grid = new JPanel(new GridLayout(15, 15));
for (int i = 0; i < spots.length; i++) {
for (int j = 0; j < spots.length; j++) {
spots[i][j] = new JButton();
spots[i][j].setActionCommand(i + ":" + j);
spots[i][j].addActionListener(this);
grid.add(spots[i][j]);
spots[i][j].setIcon(backgroundIcon);
}
}
Вам нужно создать ImageView[][]
чтобы удерживать иконки. И вы можете использовать GridView
для их отображения. Это проблема с фиксированным размером, поэтому я бы рекомендовал использовать ImageView[]
или List<ImageView>
. Взгляните на этот образец.
Примечание. Вы можете установить OnClickListener
ImageView.
Лично я думаю, что вы должны использовать GridView и управлять пятнами (с помощью Custom ListAdapter) в виде списка, а не массива 2d. Вы можете обернуть функции вокруг своего списка, что позволило бы рассматривать его как 2D-массив. В противном случае вам придется иметь дело с пользовательскими видами и адаптерами с самого начала. Также попытка импортировать слишком много кода из приложения Spring может стать беспорядочным
Если вы действительно хотите использовать 2D-массив, вы можете создать свой макет с группой ImageViews для каждого элемента массива и использовать атрибуты стиля xml (android:layout_below
android:layout_toRightOf
), чтобы создать внешний вид платы.
Затем вы можете заполнить массив 2d дескрипторами этих изображений, например:
spots[0][0] = findViewById(R.id.coords_0_0);
Тогда можно позвонить.
spots[0][0].setImageResource(R.image.newPiece);
Когда вы хотите изменить