invalidate() не обновляет View

Я борюсь с этим некоторое время, не уверен, что из-за почти 2-х лет отсутствия в Android DEV или моей глупости я перепробовал все и просто не могу перерисовать мой экран, даже если происходит invalidate(). Вот некоторый код:

GameActivity.java

onCreate

...

final CanvasActivity mCanvasActivity = new CanvasActivity(this);
setContentView(mCanvasActivity);

mCanvasActivity.setOnTouchListener(new OnSwipeTouchListener(this) {
        @Override
        public void onSwipeTop() {

            tilesArray[playerPositionY][playerPositionX] = 0;
            playerPositionY--;
            tilesArray[playerPositionY][playerPositionX] = 2;

            mCanvasActivity.invalidate();

        }

CanvasActivity.java

protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    movePlayer(canvas);
    Log.e("player", "x " + playerPositionX + " y " + playerPositionY);
}

movePlayer

if (currentBlock == 0) {
                canvas.drawRect(posLeft, posTop, posRight, posBottom, paintWall);
            } else if (currentBlock == 1) {
                canvas.drawRect(posLeft, posTop, posRight, posBottom, paintLabirynth);
            } else if (currentBlock == 3) {
                canvas.drawRect(posLeft, posTop, posRight, posBottom, paintExit);
            } else {
                canvas.drawRect(posLeft, posTop, posRight, posBottom, paintCharacter);
            }

Таким образом, в основном, когда мы проводим вверх, позиция изменяется с помощью movePlayer (уменьшая y в 2d массиве). Затем каждый прямоугольник на экране перерисовывается (весь экран содержит только прямоугольники, которые нарисованы разными цветами в соответствии с массивом строка за строкой, не имеет значения, я полагаю). Мои переменные меняются правильно, поэтому invalidate() запускает onDraw(), однако на экране ничего не меняется. Любая помощь высоко ценится.

1 ответ

Похоже, я не сбрасывал paintY в 0 при каждом вызове onDraw, и он рисовал правильно, но под экраном. Как я уже сказал, может быть, и была моя глупость:).

Другие вопросы по тегам