Intereting Posts
Android NDK с графическим движком C ++ Вспышка Samsung MultiWindow В чем причина «FimgApiStretch: стрейч не удался» в Android Поддерживаемые размеры поддерживаемых камер Android Pixel-пусковая установка продолжает останавливаться в эмуляторе Android 7.1.1 (API 25) Android: запуск переднего плана не будет правильно отображать уведомление Неудача тестов Android JUnit, не нарушая мой скрипт Ant, как я ожидаю? AdMob: «активность просочилась ServiceConnection» и «AdvertisingIdClient unbindService не удалось». Okhttp игнорирует настройку Диспетчера при использовании с Retrofit RxJavaCallAdapterFactory Переходы общего элемента с фрагментами не работают с ViewPager Samsung Galaxy S4 сопоставляет значок Actionbar Подключено мобильное устройство (Android) в качестве MTP, теперь мы можем получить доступ к этому устройству и получить время Galaxy Tab 10.1 полезное разрешение экрана (- строка меню) (Как) я могу увеличить ограничение квоты LocalStorage в Android WebView Ошибка: не удалось инициализировать класс com.android.ide.common.util.ReadWriteProcessLock после обновления до AS 2.4

Как улучшить производительность 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, он создан для таких реализаций, как ваш. Если вы не удовлетворены этим, сверните свои рукава и проверьте на холст.