Используем(рисуем) canvas без перезапуска приложения.

Ответить
Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Используем(рисуем) canvas без перезапуска приложения.

Сообщение doter.ua » 25 мар 2015, 18:58

Дано Android studio + код:

Код: Выделить всё

void onDraw(Canvas canvas){ 
   canvas.drawColor( Color.GREEN );   
} 
Кто немного знаком с канвой, поймет что за метод приведен выше.
Допустим захотелось нам поменять цвет. Придется заново компилить\запускать проект? - не обязательно.

Можно добавить "бесполезную строку" типа принт хелло ворлд и поставить на нее брейкпоинт.

Код: Выделить всё

void onDraw(Canvas canvas){ 
   canvas.drawColor( Color.GREEN );   
   System.out.println("sds"); // Тут брейкпоинт
} 
Теперь нужно заставить сработать onDraw: можно у элемента вызвать .invalidate() и онДров вызовется сам.
Приложение нарисует все что накодили в методе и остановится на брейкпоинте. На этом этапе вызываем ALT + F8 он же "Expression Evalution", затем переключаемся в режим Code Fragment Evalution (много строк) и используем там канвас. Например:
Изображение
Код со скрина для копипасты:

Код: Выделить всё

Paint myPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
myPaint.setColor(Color.RED);

canvas.drawLine( 0, 0, 100, 100, myPaint );
Нажимаем Evalute и на зеленый треугольник (F9) приложение возобновит работу (которая останавливалась брейкпоинтом)
Не смотря на то, что в онДров нету рисования красной линии, код который запускали в окошке все равно повлияет на "картинку" и вьюшка будет с линией)
Захотели нарисовать чтонить другое? дернули онДров. Например рядом кнопка которая вызывает invalidate() и снова в брейкпоинте вызываем "магическое" окошко.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Ответить