Подтвердить что ты не робот

Эффективность обрисования холста андроида

Мне было интересно, имеет ли холст предельную границу.

Я имею в виду, если я использую такие функции, как drawline(), drawbitmap(), drawcircle(), делает андроид действительно нарисовать что-то на холсте и отбросить некоторые циклы процессора?

потому что после всех функций рисования фактическая печать изображения на экране определяется по размеру экрана. И если я рисую что-то, что не соответствует размеру экрана, оно не появляется.

Я хочу сделать небольшую деталь на моем холсте, назвав множество функций рисования и сделав мою поверхность "bling bling". Если это не связано, я не хочу их использовать, если они замедляют мой рисунок.

Я работаю над небольшой игрой по структуре поверхности, спасибо за любые советы.

для примера:

У меня есть робот, идущий от экрана ↔ b на экране.

для рисования рисунка робота на холсте требуется 20 функций рисования. Если я прокручу экран, тогда я увижу робота.

Итак, если функция рисования вне экрана действительно занимает столько времени, сколько рисовать на экране. Я должен обнаружить, что только если позиция робота может быть замечена пользователем, я рисую. в противном случае я этого не делаю.

если функция рисования не тратит много процессорных циклов, я могу просто рисовать каждый раз, даже если текущий экран не может видеть робота.

4b9b3361

Ответ 1

Ваш холст поддерживается вашим растровым рисунком (2D) или openGL (3D, с которым у меня нет опыта). Весь рисунок на вашем холсте привязан к обтравочному прямоугольнику, который вы можете вырастить, сжимать, пересекаться с новыми прямоугольниками или дорожками и т.д. Итак, вы действительно хотите управлять своими обрезающими прямоугольниками, прежде чем рисовать в свой холст, особенно если он поддерживается большой битмап. Если вы клип в область, равную размеру экрана, вы будете экономить циклы процессора. Если ваша игра представляет собой игру скроллинга, вы можете кликать в область размером больше размера экрана и панорамировать вокруг, иногда вытягивая экран, чтобы обновить область, которая появляется на экране. если ваша игра имеет бесконечную прокрутку во всех направлениях, тогда вы захотите иметь несколько небольших холстов, которые вы можете нарисовать вокруг своего основного центрального холста, и переверните их слева направо, сверху вниз в зависимости от направления вашей прокрутки, Один большой битмап с одним холстом может иметь слишком большой объем памяти для небольшого устройства.

Ответ 2

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

используйте тему, например:

    <style name="Theme.NoBackground" parent="android:Theme">
        <item name="android:windowBackground">@null</item>
    </style>
</resources>

Ромен Гай прекрасно описывает это явление на http://www.curious-creature.org/2009/03/04/speed-up-your-android-ui/