Android ViewPager llama manualmente a PageTransformer transformPage

Tengo un ViewPager con la implementación de PageTransformer que hace algunas cosas funky a la página siguiente del ViewPager. Mi implementación se ve así:

class ZoomOutPageTransformer implements ViewPager.PageTransformer { private static final float MIN_SCALE = 0.85f; private static final float MIN_ALPHA = 0.5f; @Override public void transformPage(View view, float position) { int pageWidth = view.getWidth(); if (position < -1) { // [-Infinity,-1) // This page is way off-screen to the left. view.setAlpha(0); } else if (position <= 0) { // [-1,0] // Use the default slide transition when moving to the left page } else if (position < 1) { // (0,1] do some funky stuff to the page currently being scrolled into the main view on scrolling left } else if (position==1) { do some funky stuff to the next page } else { // (1,+Infinity] // This page is way off-screen to the right. view.setAlpha(1); } } 

}

El problema es que estas animaciones de transformación están disponibles tan pronto como se carga el buscapersonas, pero no están disponibles para el primer fragmento de mi viewpager. Es decir, la primera vez que se carga un fragmento, no se invoca el método transformPage . ¿Hay una manera de llamar el método de transformPage manualmente? Es decir, cuando estoy configurando mi ViewPager dentro onCreateView ? ¿O en otra parte?

Tuve una situación similar y terminé usando una fricción falsa para causar la transformación inicial:

 public void onResume() { ... Handler handler = new Handler(); final Runnable r = new Runnable() { public void run() { // force transform with a 1 pixel nudge mViewPager.beginFakeDrag(); mViewPager.fakeDragBy(1.0f); mViewPager.endFakeDrag(); } }; handler.postDelayed(r, 10); // some small delay in ms } 

Según el sitio del desarrollador,

Desarrollador de Google

Se invoca un PageTransformer cada vez que se desplaza una página visible / adjunta. Esto ofrece una oportunidad para que la aplicación aplique una transformación personalizada a las vistas de página mediante propiedades de animación. De este modo, no vería ninguna animación de transición cuando el paginador se cargue por primera vez.

Ese es un buen hack que has estado usando, pero no sé si lo habías probado ya, pero puedes animar el viewpager como un todo cuando se carga por primera vez.

  • ViewPager en TabFragment no se carga por segunda vez
  • Fragmento de Android OnCreateView llamado dos veces
  • Fragmentos en ViewPager se recrean
  • Cómo cambiar el color de texto de SlidingTabLayout?
  • Es posible hacer la transición de elementos compartidos de fragmento a ViewPager dentro de viewpager
  • InfiniteViewPager se congela en el método setCurrentItem ()
  • Android: reutilizar fragmentos de ViewPager y FragmentPagerAdapter
  • ¿Cómo obtiene el número de página actual de un ViewPager para Android?
  • ¿Cómo puedo mostrar un ViewPager en modo de pantalla completa?
  • Deshabilitar y habilitar la paginación en ViewPager en Android
  • Disminuir la velocidad de View Pager en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.