Я - ново для Android Разработка и чтение книги Hello Android
. Он использует пример Sudoku, и код, который я имею в виду, это here.Могу ли я аннулировать весь экран при каждом звонке?
В этом случае onTouchScreen он вызывает метод select, который вызывает недействительность дважды. Вопрос в том, что на invalidating
есть метод onDraw
, который называется сразу после этого? Так будет и в этом случае, в моем выборе метода, он будет делать
- Invalidate
- вызов OnDraw
- Есть некоторые вещи
- Invalidate
- вызова OnDraw
Это как это также произойдет, будет ли регенерирован весь экран? Все номера и подсказки и т.д., потому что из книги автор говорит
В более ранней версии этого примера, я аннулировал весь экран всякий раз, когда был перемещен курсор. Таким образом, на каждом ключе, нужно было перерисовать всю загадку. Это вызвало значительное отставание . Переключение кода, чтобы аннулировать только самые маленькие прямоугольники , которые изменили, заставили его работать намного быстрее.
Что именно он пытается здесь сказать?
Добавлена информация
Я добавил некоторые журналы в методе OnDraw, некоторые при пуске, некоторые в течение цикла. Всякий раз, когда я касался нового прямоугольника, все журналы были вызваны. Разве это не означает, что весь экран переполняется, так как весь код в onDraw повторно выполняется?
@ ZhenghonghWang Я не уверен, правильно ли я понял, я установил что-то грязное, и в моем коде, в методе onDraw, я действительно не получаю грязную часть явно. так вы говорите, что в моем случае все будет сделано? Потому что, по словам автора, он сделал это оптимальным образом и будет оказывать только грязную часть. – Kraken
Да, автор, о котором вы говорили, прав. Но процесс рисования может быть оптимизирован лучше. Я обновил свой ответ. –
Invalidate with rect не изменяет границы холста с аппаратным ускорением. Весь вид всегда перерисовывается независимо от того, был ли прямоугольник передан Invalidate. – jjxtra