Animar el cambio de diseño de la hoja inferior
En mi aplicación utilizo una hoja inferior (de la biblioteca de soporte) que funciona muy bien. Ahora me gustaría animar un cambio de diseño mientras se arrastra la hoja. Para esto he creado una subclase de BottomSheetCallback
(esto es normaly una clase interna de un Fragmento por lo que no todos los objetos utilizados en este calss se inicializan aquí):
public class MyBehavior extends BottomSheetBehavior.BottomSheetCallback { Transition transition; float lastOffset = 0; Scene scene; public PlayerBehavior() { TransitionInflater inflater = TransitionInflater.from(getContext()); transition = inflater.inflateTransition(R.transition.player); //transition.setDuration(300); scene = fullLayout; transition.setInterpolator(new Interpolator() { @Override public float getInterpolation(float v) { return lastOffset; } }); } @Override public void onStateChanged(@NonNull View bottomSheet, int newState) { if(newState == BottomSheetBehavior.STATE_DRAGGING) { TransitionManager.go(scene, transition); } } @Override public void onSlide(View bottomSheet, final float slideOffset) { scene = (slideOffset > lastOffset) ? smallLayout : fullLayout; lastOffset = slideOffset; } }
Como se puede ver también he creado dos Scene
de diferentes archivos de diseño y una Transition
personalizada para animar entre las escenas con el TransitionManager
. Mi problema es que la Transition
debe basarse en el parámetro slideOffset
(en el rango de 0-1), pero el TransitionManager
utiliza la clase de Animation
en el fondo que normalmente se basa en el tiempo en Android.
- Transición de página de paginación personalizada
- Transición de actividad no realizada (Lollipop)
- Elemento de transición Elemento compartido de TextView a EditText
- Animación de escala dinámica al reemplazar Fragmento
- EnterTransitionCoordinator causa NPE en Android 5.0
Intenté crear el Intapolator personalizado pero esto no funciona correctamente. Entonces, ¿cómo puedo crear una Transition
que se basa en una variable externa y no a tiempo?
- Fragmento de elementos compartidos no funcionan con ViewPager
- Compartir Imagen elemento de transición tamaño incorrecto
- Iniciar Actividad de Fragmento utilizando Transición (soporte API 21)
- ViewRootImpl.setPausedForTransition (boolean) NullPointerException en ActivityTransitionCoordinator cuando la transición a otra Actividad se invoca demasiado pronto
- ¿Cómo se puede saber si una actividad se inicia sin una transición?
- Transición de escena con elemento compartido anidado
- Cómo posicionar una vista fuera de la pantalla en el diseño de Android
- Cómo pasar de una pantalla a la siguiente con animación