У вас здесь логическая ошибка. Похоже, переменная RED
является локальной для вашего метода, если весь приведенный выше код находится внутри обработчика событий касания. Это означает, что когда пользователь прикасается к экрану каждый раз, когда он сбрасывается в 0, а затем снова становится 1. Это, вероятно, не то, что вы хотите.
Причина, по которой он отображается только в том, что g.drawPixmap будет либо отправлять элемент в очередь отрисовки, либо немедленно отображать его. Этот метод рисования кнопки может быть нарисован только когда у вас есть сенсорное событие!
Вместо этого вы можете иметь логическое значение drawGreenReadyButton в качестве члена класса, т.е.
private boolean drawGreenReadyButton = false;
Тогда вы можете изменить это внутреннее выражение if на следующее:
if(event.type == TouchEvent.TOUCH_UP){
updateWaiting(touchEvents);
drawGreenReadyButton = true;
}
И в вашем основном цикле рендеринга, а не в обработчике сенсорного события:
if(drawGreenReadyButton) {
g.drawPixmap(Assets.readybtngreentwo, 0, 0);
} else {
g.drawPixmap(Assets.readybtntwo, 0, 0);
}
Также рассмотрите возможность использования TouchEvent.TOUCH_DOWN
вместо TouchEvent.TOUCH_UP
, чтобы кнопка отображалась зеленым, как только они касаются экрана, а не когда они поднимают палец вверх.