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.
- Android: Viewpager y FragmentStatePageAdapter
- ¿Por qué FragmentManager getBackStackEntryCount () devuelve cero?
- No se puede instanciar fragmento - java.lang.RuntimeException
- Fragmento replace () no reemplaza todos los fragmentos
- Obtener información de fragmentos visibles actuales en android dumpsys
- Fragmento 2 fragmento de comunicación
- PreferenceFragment crashing, objeto nulo Referencia
- Fragment onResume () no se llama cuando se utiliza FragmentPagerAdapter
- Error de Android - getListView () en ListFragment
- MapView en Fragmento (Android 4.0 o superior)
- ADT de Android: no fragment_main.xml, sólo activity_main.xml
- Fragmentos en ViewPager se recrean
- Honeycomb Gmail Como Aplicación
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