Как улучшить производительность ViewFlipper / ViewAnimator

Я использую ViewAnimator (родительский класс ViewFlipper ), чтобы создать какую-то интерактивную книгу. Иерархия примерно такая:

<ViewAnimator> <include layout="@layout/p0" /> <include layout="@layout/p1" /> <include layout="@layout/p2" /> ... </ViewAnimator> 

Таким образом, страницы книги находятся внутри ViewAnimator. На каждой странице есть FrameLayout с несколькими слоями анимированных ImageViews, TextViews, Buttons …, которые оказались слишком большими. Отображение новой страницы книги через viewAnimator.showNext () может занять несколько секунд. Все это время проводится в ImageView.onDraw () -Traceview.

-Какая альтернатива макета ViewAnimator (ViewPager, другие реализации ViewGroup …) улучшает что-нибудь?

-Есть ли какой-либо способ предварительно загружать представления, которые будет отображаться в ViewFlipper / ViewAnimator / other? (Так что следующая страница книги всегда готова и счастлива в памяти)

-Я должен использовать Canvas или GLSurfaceView? (Не может использовать анимационную структуру)

Я застрял … ты можешь помочь?

Solutions Collecting From Web of "Как улучшить производительность ViewFlipper / ViewAnimator"

Чтобы улучшить производительность ViewFlipper, вы можете установить

андроид: measureAllChildren = "ложь"

В xml. По умолчанию для FrameLayout обычно установлено значение false, но по какой-либо причине ViewAnimator по умолчанию по умолчанию.

Установив его в false, я решил очень странную проблему с задержкой.

Я не могу ответить на все ваши вопросы, но я дам вам то, что знаю, потому что это лучше, чем отсутствие других ответов.

ViewPagers загружает представления по обе стороны по умолчанию. Это ускоряет работу коммутатора, но может замедлить отображение, которое в настоящее время открыто. Количество предустановленных представлений на viewpager может быть установлено с использованием одного из его методов.

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

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

РЕКОМЕНДАЦИЯ: Попробуйте ViewPager, он создан для таких реализаций, как ваш. Если вы не удовлетворены этим, сверните свои рукава и проверьте на холст.