Cómo evitar que viewpager inicialice la vista siguiente de forma predeterminada en android?

He implementado viewpager para mostrar algunas pantallas de introducción en la aplicación android. Hay 4 pantallas diferentes que tienen diferentes animaciones en él. Mi problema es que cuando el usuario está en 0 fragmento de viewpager el fragmento 1 inicializar por defecto y la animación termina en segundo plano y cuando el usuario va al fragmento 1 entonces no hay animación (como la animación ha terminado cuando el fragmento 1 inicializado simultáneamente con el fragmento 1). Lo que quiero hacer es que cuando el usuario está en el fragmento 0 entonces sólo el fragmento 0 debe inicializar no el siguiente fragmento que es el fragmento 1. y cuando el usuario va al fragmento 1, entonces el fragmento 0 debe destruir de modo que al deslizarse de nuevo al fragmento 0 debe inicializar de nuevo para mostrar animación. Cómo puedo hacer esto.

puede cambiar el límite de memoria de páginas ViewPAger

viewPager.setOffscreenPageLimit(0); 

deafult es 1, por lo que un fragmento / vista a la izquierda ya la derecha permanecerá en la memoria.

PERO esto es una mala práctica, viewPager es mantener un Fragmento / Vista en cada lado para un mejor rendimiento y suave e inmediatamente posibilidad de desplazamiento. Le estoy sugiriendo que cree el oyente para ViewPager que encendido animaciones en desplazado al fragmento deseado (que no comienza las animaciones en onCreateView ). compruebe ViewPager.OnPageChangeListener , especialmente el onPageSelected(int position)

editar: Google admite que la configuración de 0 para el límite es débil, en las últimas versiones logcat dice:

 Requested offscreen page limit 0 too small; defaulting to 1 

así que tienes que usar el oyente para disparar animaciones, también es mejor para el rendimiento. como usted ve el método que usted quiere utilizar es deprecated por el autor (Google sí mismo). de la clase ViewPager

 public void setOffscreenPageLimit(int limit) { if (limit < DEFAULT_OFFSCREEN_PAGES) { Log.w(TAG, "Requested offscreen page limit " + limit + " too small; defaulting to " + DEFAULT_OFFSCREEN_PAGES); limit = DEFAULT_OFFSCREEN_PAGES; } if (limit != mOffscreenPageLimit) { mOffscreenPageLimit = limit; populate(); } } 

también puede crear su propio ViewPager o cambiar DEFAULT_OFFSCREEN_PAGES o mOffscreenPageLimit y disparar populate(); método, todos usando Reflections, smth como este

 Field f = ViewPager.class.getDeclaredField("DEFAULT_OFFSCREEN_PAGES"); f.setAccessible(true); f.setInt(viewPager, 0); 

entonces setOffscreenPageLimit(0); Deberia trabajar

Puede utilizar fragment call on onResume como en actividad para iniciar la animación. enlace: http://developer.android.com/reference/android/app/Fragment.html#onResume%28%29

  • ¿Cómo agregar otro fragmento en el fragmento existente?
  • Fragmentos de viewpager anidados en android 2.3.3 y 4.0
  • Fragmento ya activo - Al intentar establecerArgumentos
  • Uso de RoboFragment con FragmentManager
  • ¿La API de ICS de Android tiene un equivalente nativo a la biblioteca de soporte de ViewPager?
  • Android - FragmentTabHost me da "No se conoce ninguna pestaña para la etiqueta null"
  • Android Refreshing Fragment View después de AsyncTask
  • getChildFragmentManager () no se puede resolver o no se puede hacer referencia
  • Fragmentos de Android que se superponen tras la rotación de la pantalla
  • Biblioteca de navegación para automóviles Android
  • Fragmentos múltiples con diferentes listas de expansión para los mismos datos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.