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