Cambiar la animación del fragmento ya en la pila
Supongamos que ejecute el siguiente código para colocar un fragmento en la pila. Establece las animaciones para cuando veo inicialmente el fragmento y cuando se sale del fragmento.
FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.setCustomAnimations(R.anim.slide_left, R.anim.no_anim, R.anim.no_anim_show, R.anim.slide_right_away); fragmentTransaction.replace(R.id.container, fragment, tag); fragmentTransaction.addToBackStack(tag); fragmentTransaction.commit();
Si quiero cambiar la animación de salida más tarde, ¿cómo podría hacer esto? Como en, si tuviera el siguiente código:
- ¿Qué hace transitive = true en Gradle exactamente hacer (wrt crashlytics)?
- Android - botón de pantalla completa transparente
- Error al agregar la biblioteca a Android Studio
- Inflater y lazo no funciona como debería
- Uso del GPS para capturar velocidad
getFragmentManager().popBackStack();
Pero quiero una animación diferente a la que originalmente coloqué en la pila.
- Error de Stackoverflow de JsonObject Build
- Cuando está fuera del hilo principal, ¿cómo puedo obtener algún código para ejecutarse en el hilo principal lo más rápido posible?
- ¿Cómo podemos crear un gráfico de las dependencias de Dagger 2?
- La aplicación de licencias de Android no funciona?
- Android Cómo calcular el uso de la red de paquetes / datos
- HTTP / 1.1 400 Petición incorrecta en httpGet con autenticación base
- Utilice el método de clase T extendiendo ArrayList <T>
- Cambiar el tamaño de una casilla de verificación en android
Lo siguiente es lo que intenté, y funcionó:
getFragmentManager().beginTransaction().setCustomAnimations( R.anim.slide_left, R.anim.new_anim) .remove(fragment) .commit();
Por lo tanto, parece que tuve que explícitamente "eliminar" el fragmento en una nueva transacción de fragmentos, con el fin de hacer uso de la nueva animación de salida
Puede cambiar la animación personalizada antes de salir de la pila trasera
getFragmentManager().beginTransaction().setCustomAnimations(R.anim.slide_left, R.anim.no_anim, R.anim.no_anim_show, R.anim.new_pop_exit).commit();
Y ejecutar transacciones pendientes antes de hacer estallar la pila trasera
getFragmentManager().executePendingTransactions(); getFragmentManager().popBackStackImmediate();
Nota: las animaciones de popExit se jugarán para las operaciones de salida específicamente al hacer estallar la pila trasera