Просмотр страницы ViewPager

Простой вопрос, есть ли ViewPager.PageTransformer, который оживляет эффект завивки страницы?

Я искал везде, но я не мог найти его и не знал бы, как реализовать его сам …

Спасибо заранее, Седрик

Я думаю, что @ Cédric был прав – это, вероятно, не стоит.

Так что мне удалось заставить эту работу работать, но там много уродства.

  • В программной архитектуре есть какая-то клейкая лента. Поскольку трансформаторы страниц работают только с представлениями, приложение зависит от использования настраиваемого макета, который может обрабатывать рисование зависания страницы. Поэтому трансформатор выглядит так:

     public static class PageCurlPageTransformer implements PageTransformer { @Override public void transformPage(View page, float position) { Log.d(TAG, "transformPage, position = " + position + ", page = " + page.getTag(R.id.viewpager)); if (page instanceof PageCurl) { if (position > -1.0F && position < 1.0F) { // hold the page steady and let the views do the work page.setTranslationX(-position * page.getWidth()); } else { page.setTranslationX(0.0F); } if (position <= 1.0F && position >= -1.0F) { ((PageCurl) page).setCurlFactor(position); } } } 

    }

  • Чтобы получить реалистичное раскрытие страницы, вам нужно использовать Canvas.clipPath . У меня возникли проблемы с тем, чтобы это было привязано к фактическому пути при тестировании на эмуляторе. Мне пришлось прибегнуть к тестированию на устройстве, чтобы увидеть, что clipPath работает правильно. Даже отключение аппаратного ускорения не работало над эмулятором. Это дает мне небольшую уверенность в том, что это будет выглядеть правильно на всех устройствах все время.

  • Я просто нарисовал поворотный угол с dispatchDraw . Это, вероятно, не лучшее место для этого. Если бы я занимал больше времени, у меня, вероятно, был бы особый декор в представлении пейджера, и у него будет локон.

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

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

Проект находится здесь: https://github.com/klarson2/PageCurlWithPageTransformer

ура