0

Возможно ли установить различные PageTransformers для разных фрагментов в ViewPager?Android ViewPager различные переходы для разных страниц

Я хотел бы использовать ZoomOutPageTransformer, когда пользователь просматривает между (0, 1) и (n-1, n) фрагменты ViewPager с n фрагментами и использует переходы по умолчанию для всех остальных случаев.

Что я пробовал:

Detect текущую страницу с mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { ... }) и применить различные переходы здесь. Но, например, если пользователь находится на первой странице - как установить ZoomOutPageTransformer только для случая, когда он пролистнет влево (0 страница) и сделает это до начала анимации?

ответ

0

Inspite Из использования mViewPager.setOnPageChangeListener, а одного PageTransformer с различной анимацией может помочь.

Посмотрите на первый пункт здесь,

http://developer.android.com/training/animation/screen-slide.html#pagetransformer

+0

Возможно, это то же самое, что я делаю сейчас - применяя разные 'PageTransformer' для разных страниц, обнаруживающих, какой из них отображается сейчас? Или идея состоит в том, чтобы обнаружить текущую страницу внутри пользовательского 'PageTransformer'? – Sergii

1

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

я сделал ниже:

  1. Applied viewPager.setPageTransformer(true, new DepthPageTransformer()); для всех страниц.
  2. onClick Я изменил его на viewPager.setPageTransformer(true, new VerticalPageTransformer());. Теперь вот улов в порядке, чтобы это нормально функционировало. Мне пришлось использовать handler, чтобы немного изменить страницу, чтобы убедиться, что VerticalPager вступает в силу. Я достиг этого, позвонив viewPager.setCurrentPosition(viewPager.getCurrentItem() + 1)
  3. После этого внутри метода onPageSelected onPageChangeListener я снова его сменил обратно на viewPager.setPageTransformer(true, new DepthPageTransformer()); внутри handler, чтобы убедиться, что это сделано после завершения моей вертикальной анимации.

Примечание. Я также получил доступ к скроллеру ViewPager для достижения вышеуказанного, чтобы определить свою скорость для изменения страницы.

Дайте мне знать, если это имеет смысл, так как вам нужно, чтобы это было сделано на основе номеров страниц. Если это так, я поделюсь своим кодом. :)

+0

Большое спасибо за ваш ответ. Моя главная проблема здесь - переключиться на разные режимы анимации во время прокрутки в разные стороны. Итак, как hardcode - если мы находимся на первой странице сейчас - если пользователь прокручивает вправо (страницы 2+) - мы должны показывать анимацию по умолчанию, но если слева (назад к странице 0) - показывать ZoomOutPageTransformer один? – Sergii