2017-02-13 23 views
0

Просто вопрос.Android Hardware Acceleration: нужен ли мне аппаратный уровень для анимации?

Я читал некоторые документы, чтобы обеспечить очень плавный интерфейс. Я знаю, что по умолчанию в любых проектах приложений, ориентированных на SDK 14+, будет включен Hardware Acceleration.

В этом случае мне действительно нужно использовать аппаратные слои для конкретных анимаций, которые изменяют свойства (альфа, масштаб, перевод и вращение), которые оптимизированы как часть Project Butter?

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

Спасибо за ваши данные!

ответ

0

Мне было интересно об этом, так что я сделал небольшой тест. Я включил обновления обновлений аппаратного уровня и выполнил простую анимацию насыщения вместе с переводом, и он не загорелся. Поэтому я запустил его с LAYER_TYPE_HARDWARE и, конечно же, он загорелся. Поэтому я думаю, что это играет определенную роль. На самом деле это не имело большого значения для анимации моего Nexus 5x.

+0

Можете ли вы определить свою насыщающую анимацию? Для меня я также сделал небольшой тест. Я не вижу разницы с простой анимацией 10 минут(), которая анимирует значения масштабирования и сдвига на обеих сторонах текста HelloWorld в новом проекте. Я тестировал на Galaxy Note 3, работающем на CM 13. Я мог отчетливо видеть некоторую потерю кадров каждый раз в графических мониторах: она негладкая. Зачем ? – Mackovich

+0

Насыщенная анимация в основном меняет цветной фильтр 'ImageView', используя 'animatedView.setColorFilter()'. –

+0

Значит, это не часть оптимизированных свойств? Эти свойства модифицируются внутри RenderThread, введенного в Lolliopop. Это помогает уменьшить поток пользовательского интерфейса из-за слишком большого количества задач. – Mackovich