2016-02-02 2 views
4

У меня есть бесконечный и автоматический просмотр пейджера с 3 страницами (виды, а не фрагменты). Использование ObjectAnimator я создал фиктивную анимации, как так:Пейджер с автопрокруткой вызывает падение кадров

valueAnimator.setRepeatMode(ObjectAnimator.RESTART); 
valueAnimator.setRepeatCount(ObjectAnimator.INFINITE); 
valueAnimator.setDuration(1500); 

и onAnimationRepeat, я использую setCurrentItem(nextItem, true), чтобы перейти к следующей странице. Однако, если я сижу и жду на этом экране, тогда производительность пользовательского интерфейса становится ниже и ниже после 10 или около того изменений страницы (используя TinyDancer Я заметил, что FPS падает до 20 с 60).

Однако, изменив линию на setCurrentItem(nextItem, false) (установка smoothScroll на false), падение производительности устраняется.

Есть ли что-то о вызове setCurrentItem несколько раз, что может вызвать это? Могу ли я настроить поведение smoothScroll, чтобы исправить это? Опять же, я в любой момент загружаю в этот пейджер не более 5 просмотров, и я наблюдал, как использование памяти остается неподвижным при просмотре FPS.

+0

Установите предельный размер экрана для вашего ViewPager равным нулю или одному (setOffscreenPageLimit (0)). –

+0

Я уже устанавливаю его в 1; установив его на 0, выдается сообщение журнала 'Requested offscreen page limit 0 слишком маленькое; по умолчанию 1'. – blork

ответ

1

Скорее всего, это связано с видами, на которые влияет ViewPager. Существует ли родительский макет, где находится ViewPager? Проверьте, есть ли у вас родительский вид. Манекен-анимация может заставлять родительский макет повторно рисовать себя и дочерние элементы многократно. Это особенно хлопотно, когда у вас есть ... подождите ... Вложенные взгляды!

Смежные вопросы