В настоящее время я пытаюсь понять, как правильно использовать аппаратные слои при анимации видов.
Я реализую ViewGroup, который позволяет пользователю перетаскивать дочернее представление, после чего я анимирую его в положение, когда они отпускают (например, как ViewPager будет располагаться на странице). В этой статье говорится, что аппаратные уровни следует включать только на время анимации.
Проблема, с которой я сталкиваюсь, заключается в том, что после включения аппаратных слоев Android должен создавать слои, что на Galaxy Nexus занимает 70-100 мс. Это означает, что я не могу сделать это непосредственно перед запуском анимации, так как задержка между перетаскиванием и анимацией будет очень заметной. Я также не могу включить его при запуске перетаскивания по той же причине.
Теперь эта задержка присутствует только при первом создании аппаратных слоев, поэтому в идеале я бы хотел, чтобы они создавались, как только представления добавляются в макет. Мне указали на View.buildLayer() , но я не уверен, как подойти к этому.
- Каким будет правильный способ добиться этого?
- Есть ли какие-либо методы в моей ViewGroup, которые я могу переопределить и вызвать buildLayer() для дочерних представлений?
- Может ли аппаратный уровень быть каким-то образом аннулирован, вызывая еще одну задержку в 70-100 мс? И как мне справиться с этим?