Надеюсь, что это ставит вас на правильный путь. Это очень сложный предмет.

лизую свой собственный вид, где я переопределитьonDraw() метод для того, чтобы нарисовать некоторый набор объектов.

Предполагается, что объекты размещаются в координатах, которые оцениваются определенным образом. Код, размещающий эти объекты, работает некорректно (некоторые из них либо вообще не прорисованы, либо перекрываются другими объектами), поэтому мне нужно выполнить некоторую отладку, чтобы выполнить его построчно и посмотреть, что на самом деле рисуется шаг за шагом. -ступенно.

Однако, насколько я понимаю, реальная картинка отображается на экране после того, как весь рисунок завершен, так как, когда я выполняюcanvas.drawBitmap строка ничего не появляется на экране моего эмулятора.

Мой вопрос: каков наилучший (или, может быть, единственный) способ отладкиonDraw() код? Я провел некоторое исследование на портале разработчиков Adroid и здесь, в опубликованных вопросах, но не смог найти решение.

Ответы на вопрос(3)

Решение Вопроса

Другой вариант - использовать таймер. Часто аннулировать представление из другого потока и изнутри.onDraw запускать разные заявления, только если прошло некоторое время. Используйте разное время для разных операторов, чтобы оно выглядело как анимация.

В начале вашего метода onDraw создайте новое растровое изображение, используя ширину и высоту из холстаСоздайте новый холст из растрового изображенияВыполните ваши розыгрыши на этом холстеВы можете проверить растровое изображение в отладчике Android Studio и обновляться при каждом вызове отрисовки.Если вы также хотите нарисовать данные на экране, вы можете использовать drawBitmap на оригинальном Canvas с вашим полным растровым изображением, но это не нужно для отладки.

Не оставляйте это в производственном коде

@Override
public void onDraw(Canvas canvas) {
    Bitmap screenBitmap = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas screenCanvas = new Canvas(screenBitmap);

   /* Run draw calls on screenCanvas, inspect screenBitmap for result*/
}
 Attila Tanyi20 апр. 2018 г., 11:03
Это правильный способ «смотреть, что на самом деле рисуется шаг за шагом». Чтобы было ясно, когда вы отлаживаете в Android Studio и просматриваете растровое изображение (с помощью Run> Evaluate Expression или в представлении Variables), справа от переменной появляется метка / кнопка «View Bitmap». Если вы щелкнете по нему, то сможете увидеть растровое изображение в любом наполовину нарисованном состоянии.

но я знаю, что ускорение графики в Android сейчас довольно сложно: команды рисования записываются в списки чертежей, которые затем оптимизируются и обрабатываются в графическом процессоре для рисования. И, начиная с Android 5.0, часть чертежа, которая должна обрабатываться в ЦП, может (всегда?) Выполняться в фоновом потоке. Видетьhttps://source.android.com/devices/graphics/ для общего фона.

Тогда, про инструменты, я бы предложил использоватьsystrace, Для получения дополнительной информации и подробного примера того, как его использовать и больше инструментов, см. Превосходную (хотя, возможно, немного устаревшую) статью Ромена Гая "Пример производительности Android"и продолжение"Последующее исследование производительности Android».

Также смотрите документацию по Android "Идеальное использование GPU».

Надеюсь, что это ставит вас на правильный путь. Это очень сложный предмет.

Ваш ответ на вопрос