|  8.03.2016 / 13:59 |  | 
| aNNiMON   Супервизор 
  Сейчас: Offline 
 Имя: ВитёкРегистрация: 11.01.2010
 
 | __________________Не могу придумать, как модуль canvas реализовать. Нужно отрисовывать всё в UI-потоке на кастомной вьюшке. Другую активити не создашь, приходится держать на одном экране и вьюшку и редактор с консолью. Но на деле получается так , хотя я вроде очищаю фон во вьюшке. Хотелось, чтобы всё было менее костыльно и перекрывало ActionBar. Any ideas?
   let live | 
|  8.03.2016 / 16:19 |  | 
| Naik    Пользователь 
  Сейчас: Offline 
 Имя: %name%Регистрация: 14.03.2010
 
 | aNNiMON, AlertDialog?
 | 
|  8.03.2016 / 16:22 |  | 
| aNNiMON   Супервизор 
  Сейчас: Offline 
 Имя: ВитёкРегистрация: 11.01.2010
 
 | Naik,  не, не вариант. Потом ещё события нажатий вешать надо, а диалог только мешать будет.__________________
 
   let live | 
|  8.03.2016 / 16:27 |  | 
| Naik    Пользователь 
  Сейчас: Offline 
 Имя: %name%Регистрация: 14.03.2010
 
 | aNNiMON,  public void toggleCanvasMode(boolean show) {    toolbar.setVisibility(show? View.GONE : View.VISIBLE);    canvasLayout.setVisibility(show? View.VISIBLE : View.GONE);}
 | 
|  8.03.2016 / 16:35 |  | 
| aNNiMON   Супервизор 
  Сейчас: Offline 
 Имя: ВитёкРегистрация: 11.01.2010
 
 | Naik, ты не поверишь, так и делаю. Но без тулбара, не очень хочется support-lib тянуть только ради этого. Есть какие-то упрощённые решения?__________________
 
   let live | 
|  8.03.2016 / 16:52 |  | 
| Naik    Пользователь 
  Сейчас: Offline 
 Имя: %name%Регистрация: 14.03.2010
 
 | aNNiMON,  Проблема в том что ActionBar не скрывается? Так может он и нужен, остановить программу кнопку сделать например там. Можно ещё на фрагменты разбить канвас и текстовый режим
 Изменено Naik (8.03 / 16:54) (всего 2 раза)
 | 
|  8.03.2016 / 17:29 |  | 
| aNNiMON   Супервизор 
  Сейчас: Offline 
 Имя: ВитёкРегистрация: 11.01.2010
 
 | __________________Naik, с фуллскрином этот код  помог. А фон просвечивался из-за того, что я вьюшку поместил не над EditText и TextView, а под ними.  
   let live | 
|  8.03.2016 / 19:35 |  | 
| aNNiMON   Супервизор 
  Сейчас: Offline 
 Имя: ВитёкРегистрация: 11.01.2010
 
 | __________________Проблема: вьюшка не успевает проинициализироваться. Вызывается метод инициализации, в котором вьюшка ставится в VISIBLE, добавляется listener, чтобы выполнять код в onDraw, где при первой прорисовке должен создаться bitmap и другой canvas, на котором будем рисовать. private void init() {    bitmap = null;    cv.setVisibility(View.VISIBLE);    CanvasView.setListener(this);    cv.invalidate();} protected void onDraw(CanvasView cv, Canvas c) {    if (bitmap == null) {         // тут получаем размеры вьюшки, создаём bitmap и canvas    }    c.drawColor(WHITE);    c.drawBitmap(bitmap, 0, 0);}
Вылетает NPE при попытке нарисовать линию и только потом вызывается onDraw, где инициализируется bitmap. Похоже, что cv.invalidate()  не блокирует поток, что логично. Вопрос в том, как мне вовремя вызвать onDraw? Блокировать основной поток не получится, потому что вьюшка тоже в нём должна отрисовываться, соответственно deadlock будет.
   let live | 
|  8.03.2016 / 20:10 |  | 
| aNNiMON   Супервизор 
  Сейчас: Offline 
 Имя: ВитёкРегистрация: 11.01.2010
 
 | __________________Хм, попробую ещё SurfaceView, как советуют здесь .
   let live | 
|  8.03.2016 / 20:19 |  | 
| Naik    Пользователь 
  Сейчас: Offline 
 Имя: %name%Регистрация: 14.03.2010
 
 | aNNiMON,  рисуй в буфер, должно помочь
 |