android android-5.0-lollipop shared-element-transition activity-transition fragment-transitions

¿Cómo posponer la transición de ingreso de un Fragmento en Android Lollipop?



android-5.0-lollipop shared-element-transition (1)

En Android Lollipop, los métodos Activity#postponeEnterTransition() y Activity#startPostponedEnterTransition() dan a la actividad la capacidad de retrasar el inicio de la entrada y salida de las transiciones de elementos compartidos hasta que se carguen todos los datos. Estos funcionan muy bien para las transiciones de Activity .

¿Hay alguna manera de lograr el mismo efecto cuando se utilizan las transiciones de Fragment ?


No hay un equivalente directo en Fragment Transitions porque Fragment utiliza FragmentTransaction y realmente no podemos posponer algo que se supone que ocurre en una transacción.

Para obtener el equivalente, puede agregar un Fragmento y ocultarlo en una transacción, luego, cuando el Fragmento esté listo, quite el Fragmento antiguo y muestre el Nuevo Fragmento en una transacción.

getFragmentManager().beginTransaction() .add(R.id.container, fragment2) .hide(fragment2) .commit();

Más tarde, cuando el fragmento 2 está listo:

getFragmentManager().beginTransaction() .addSharedElement(sharedElement, "name") .remove(fragment1) .show(fragment2) .commit();