android - tesis - Ingrese la transición en un fragmento con un elemento compartido que apunta al elemento compartido
tesis sobre youtube pdf (1)
Estoy usando la nueva api de Lollipop para establecer setEnterTransition
en un fragmento y luego agregar una transición de elemento compartido para una imagen en el fragmento. El comportamiento deseado es primero, la imagen debe moverse a su posición, luego de lo cual el resto de las vistas en el fragmento deberían aparecer.
Sin embargo, se está aplicando enterTransition al elemento compartido, por lo que se está desvaneciendo con el resto de las vistas. Si no configuro enterTransition, la imagen se mueve correctamente, pero mientras se está moviendo, el otro contenido ya está visible.
¿Cómo consigo que no aplique enterTransition a la vista compartida?
Encontré este compromiso en el AOSP que parece que debería abordar este problema, pero no parece estar funcionando.
Aquí está el código de muestra:
public class Fragment1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.main_fragment, container, false);
final ImageView imageView = (ImageView) rootView.findViewById(R.id.image);
final Button button = (Button) rootView.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TransitionSet transitionSet = new TransitionSet();
transitionSet.addTransition(new ChangeImageTransform());
transitionSet.addTransition(new ChangeBounds());
transitionSet.setDuration(300);
Fragment fragment2 = new Fragment2();
fragment2.setSharedElementEnterTransition(transitionSet);
fragment2.setSharedElementReturnTransition(transitionSet);
Fade fade = new Fade();
fade.setStartDelay(300);
fragment2.setEnterTransition(fade);
getFragmentManager().beginTransaction()
.replace(R.id.container, fragment2)
.addSharedElement(imageView, "SharedImage")
.commit();
}
});
return rootView;
}
}
La transición de entrada no debe aplicar las vistas de elementos compartidos. El escenario más probable es que su elemento compartido esté dentro de otra vista con un fondo, haciendo que esa vista se vea afectada por la transición de ingreso. Esa es una situación como esta:
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FFF"
>
<ImageView android:src="@drawable/pretty_picture"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:transitionName="picture"
android:padding="20dp"/>
</FrameLayout>
Aquí, el ImageView es el elemento compartido.
Si eso sucede, querrá agregar una transición mágica: ChangeTransform. Si detecta que el padre cambia, sacará el elemento compartido del padre y lo hará por separado.