Пишу программу, которая весь на весь экран рисует сетку квадратов. В каждом квадрате нарисована цифра "0". Когда пользователь нажимает на какой-либо квадрат, то в этом квадрате вместо "0" отображается "-1". ( Хочу использовать эту программу в дальнейшем для создания алгоритма для поиска пути ). Рисование происходит в отдельном классе унаследованном от Thread. А конкретно, в методе run рисуется сетка из квадратов, и в каждый квадрат должна рисоваться цифра. Что бы понять, какая цифра рисуется в квадрате, вне метода run создаю таблицу ( ячеек столько же сколько квадратов на экране ), в которой по стандарту все ячейки равны "0". Но вне метода run нельзя использовать методы getHight(), getWidth(), и нельзя сделать таблицу. Может кто помочь нубу, какими методами нужно создавать таблицу вне метода run?
public class DrawMap extends Thread {
private SurfaceHolder surfaceHolder;
int CellSize = 50;
int xm, ym;
int xw = CellSize; // Размеры квадрата по X
int yw = CellSize; // Размеры квадрата по Y
int finx, finy;
int[][] map;
float movex = 0;
float movey = 0;
private volatile boolean running = true;//флаг для остановки потока
{
finx = (canvas.getWidth() / xw); // Создание массива который содержит информацию о квадратах
finy = (canvas.getHeight() / yw);
map = new int[finx][finy];
for (int i = 0; i < finx; i++) {
for (int z = 0; z < finy; z++) { // Заполнение массива нулями
map[i][z] = 0;
}
}
}
public DrawMap(Context context, SurfaceHolder surfaceHolder) {
this.surfaceHolder = surfaceHolder;
}
public void requestStop() {
running = false;
}
@Override
public void run() {
while (running) {
Canvas canvas = surfaceHolder.lockCanvas();
if (canvas != null) {
try {
// рисование на canvas
Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStyle(Paint.Style.STROKE);
if (canvas.getWidth() % xw != 0) {
xw++;
}
if (canvas.getHeight() % yw != 0) {
yw++;
}
while (movex < canvas.getWidth()) {
canvas.drawLine(movex, 0, movex, canvas.getHeight(), paint);
movex += xw;
}
while (movey < canvas.getHeight()) {
canvas.drawLine(0, movey, canvas.getWidth(), movey, paint);
movey += yw;
}
} finally {
surfaceHolder.unlockCanvasAndPost(canvas);
}
}
}
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Изучают javaСама программа думаю будет простая, единственному юзеру