Android: как быстрее получить onDraw () - PullRequest
1 голос
/ 29 февраля 2012

Я создал действие, которое вызывает DrawView, расширяет View, я рисую на Canvas что-то вроде двоичного дерева.Размер холста больше размера экрана, а функция onDraw рисует весь холст, а не только его видимую часть.Я добавил горизонтальный и вертикальный scrollView, и, очевидно, onDraw вызывается снова и снова, чтобы обновить вид.Мне было интересно, могу ли я нарисовать холст на изображении (растровое изображение или что-то в этом роде), используя это изображение для отображения дерева, без необходимости вызывать функцию onDraw.Если я не могу этого сделать, что я могу сделать, чтобы получить более быстрый просмотр?

Ответы [ 2 ]

4 голосов
/ 29 февраля 2012

Если вы используете API 11 или выше, вы можете попробовать использовать атрибут аппаратного ускорения в теге приложения в манифесте.

<application ... android:hardwareAccelerated="true" ...>

Кроме того, вы можете рассмотреть возможность использования другого рендеринга, кроме View, также посмотрите на SurfaceView.

Как правило, я думаю, что вам не следует переопределять View, если вы не создаете компонент пользовательского интерфейса (например, Button), не цитируйте меня по этому поводу.

1 голос
/ 29 февраля 2012

Технически холст рисует на растровом изображении. Так что на самом деле растровое изображение больше экрана. Почему вы делаете растровое изображение больше экрана? Большие битмапы = больше использования памяти - что может немного замедлить работу. Вы действительно рисуете только в ограниченных пределах экрана - вы можете подумать, что вы рисуете за пределами экрана, но это не так. Рисование на другом растровом изображении вам не поможет - вы уже это делаете. Не глядя на ваш код, вы можете попробовать:

  • рисует только те изменения в двоичном дереве, вызывая invalidate(rect), который перерисовывает только то, что изменилось
  • если ваше двоичное дерево должно быть статичным, просто создайте его в формате png / jpg и отобразите это изображение вместо рисования всего этого самостоятельно
  • убедитесь, что вы не звоните, чтобы сделать недействительными больше, чем нужно
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...