tutorial studio onattach fragments example dinamicos desde con activity abrir android android-fragments android-recyclerview shared-element-transition fragment-transitions

android - studio - Elementos compartidos animándose entre fragmentos.



navigation drawer con fragments android studio (1)

Finalmente resolvió este problema! Resulta que debido a que la vista que estoy compartiendo entre 2 fragmentos es un elemento secundario de otra vista (RelativeLayout) en el segundo fragmento, debe agregar la transición ChangeTransform a su TransitionSet. Aparentemente, ChangeTransform le dice al sistema que recuerde la posición original de las vistas en el primer fragmento antes de animar a la nueva posición en el segundo fragmento. Aquí está mi transición actualizado. También limpiaré un poco el código del proyecto de prueba y haré un último empujón a bitbucket en caso de que ayude a otros después de mí. Gracias por toda la ayuda con este Alex y gracias a @ George-mount por responder a una pregunta similar que me hizo pensar en esta solución.

<?xml version="1.0" encoding="utf-8"?> <transitionSet xmlns:android="http://schemas.android.com/apk/res/android"> <changeTransform/> <changeBounds/> </transitionSet>

https://bitbucket.org/brockoli/fragmentsharedelements

Estoy intentando animar 2 vistas simples de un elemento seleccionado en un RecyclerView a un nuevo fragmento. He visto muchos ejemplos de animar elementos compartidos de una actividad a otra actividad, pero muy pocos ejemplos de animar un elemento compartido de un fragmento a otro fragmento dentro de la misma actividad. Casi funciona.

Aquí está mi estructura.

Actividad

- Fragmento de pantalla completa1 con RecyclerView

- Fragmento de pantalla completa2 con detalles

Cuando el usuario selecciona un elemento en RecyclerView en Fragment1, sustituyo Fragment1 por Fragment2 que tiene una Vista con los elementos compartidos en diferentes posiciones y tamaños.

Hay un pequeño truco para que funcione, debes asegurarte de que la transición Nombre es único para cada elemento de tu lista y, por supuesto, que la transición Nombre debe coincidir con el nombre de transición del elemento en Fragment2 para que se reproduzca la animación. Tengo esta parte funcionando, cuando selecciono un elemento, las 2 Vistas compartidas se animan, pero no exactamente como se esperaría al hacerlo entre 2 Actividades.

Si selecciono un elemento cerca de la parte inferior de la pantalla, dibuja la Vista para Fragmento2 y anima las 2 Vistas compartidas como si estuvieran en el elemento en la parte superior de la pantalla. Difícil de explicar. Aquí hay algunas fotos

Fragmento 1

Fragmento 2

En ambos fragmentos estoy configurando los siguientes

setSharedElementEnterTransition(new ChangeBounds()); setSharedElementReturnTransition(new ChangeBounds()); setAllowEnterTransitionOverlap(true); setAllowReturnTransitionOverlap(true);

También en su actividad principal en onCreate () he establecido

getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);

¿Alguna idea de por qué mis animaciones de elementos compartidos comienzan en la parte superior de mi pantalla, incluso cuando empezaron en el elemento seleccionado en la parte inferior de mi pantalla?