Aplique PageTransformer a PagerView tan pronto como sea posible
Tengo un PageTransfomer aplicado a un ViewPager, funciona muy bien, pero quiero iniciar la transformación de la página tan pronto como establezca el PageTransformer a ViewPager. Ya lo intenté:
- SetCurrentItem (int)
- SetCurrentItem (int, true)
- BeginFakeDrag (), fakeDragBy (float), endFakeDrag ()
- invalidar()
- GetAdapter (). NotifyDataSetChanged ()
He intentado todos estos en el onCreate de mi actividad, pero tal vez estoy equivocado.
- Mediaplayer responde al segundo clic para pausar
- PagerTabStrip: cambia el ancho de la pestaña
- El fragmento ya no existe para la clave f0: index 1
- Cambiar color TabSelector en v4 ViewPager
- Permitir rotación / paisaje en un fragmento
¿Alguien tiene una pista?
Gracias
- ViewPager espera a finalizar antes de que se hagan todos los fragmentos
- Barra de navegación de Android que cubre el contenido del visualizador
- Obtener Parent ViewPager Ver desde el interior Fragmento
- Efecto de Cover Flow con ViewPager
- Uso de la animación en un ViewPager y setFillAfter
- Nesting Android ViewPager, Swiping ListItems dentro de un ListView horizontalmente
- Android ViewPager: Actualización de fragmentos fuera de la pantalla pero en caché en ViewPager
- ViewPager dentro de CoordinatorLayout cubre otras vistas en API> = 21
Pruebe una de estas cosas:
- Coloque el código en
onPostCreate()
- Poner el código en un controlador; Es decir,
new Handler().post(new Runnable() { /* your code */ });
Basado en la respuesta de Oleg se utiliza el código de abajo para mi aplicación.
Mi adición es comprobar el resultado devuelto de beginFakeDrag()
dentro de _invalidatePageTransformer
.
Llamo a sendInvalidatePageTransformer()
desde el interior
-
onConfigurationChanged()
cuando la orientación cambió -
Dentro del
LoaderCallback<Cursor>
-methods en mi Fragmentoprivate Handler handler = new Handler() { public void handleMessage(Message msg) { switch(msg.what) { case 0: _invalidatePageTransformer(); break; } } }; private void _invalidatePageTransformer() { //no need to invalidate if we have no adapter or no items if (this.getAdapter() != null && this.getAdapter().getCount() > 0) { //import check here, only fakeDrag if "beginFakeDrag()" returns true if (this.beginFakeDrag()) { this.fakeDragBy(0f); this.endFakeDrag(); } } } public void sendInvalidatePageTransformer() { this.handler.sendEmptyMessage(0); }
EDIT: Nota: Este código se encuentra dentro de una subclase ViewPager personalizada
- Utilizar un BroadcastReceiver para iniciar un AsyncTask
- El ejemplo más simple de Gson.fromJson falla