Cómo cambiar las animaciones utilizadas por el mecanismo de animateLayoutChanges?

Tengo un RecyclerView en el cual el usuario selecciona un artículo. Al seleccionar una determinada vista se hace visible antes del texto (ver imagen). Quiero animar su apariencia.

Representación grafica

animateLayoutChanges propiedad en el diseño del elemento hace el trabajo perfectamente, a excepción del tipo de animación para ver la apariencia – se desvanece pulg. Quiero que escala de 0 a 100% de tamaño, creo que se llama 'pop up' de animación.

Si deshabilito animateLayoutChanges y uso animación XML para eso, funciona, pero el texto cercano ya no está animado (debe deslizarse para acomodar espacio para la vista y su margen). Desplaza instantáneamente hacia la derecha y luego se reproduce la animación. Esto es peor con la animación inversa, ya que el texto se superpone a la vista antes de que desaparezca.

Así que necesito combinar el mecanismo por defecto y mi propia animación de alguna manera. ¿Cuál sería la manera más sencilla de lograr eso sin profundizar en animaciones personalizadas?

Después de mucho excavar en los lugares equivocados, encontré la respuesta yo mismo. Podría ayudar a alguien.

animateLayoutChanges propiedad animateLayoutChanges si está habilitada utiliza una instancia de LayoutTransition para realizar su trabajo en ViewGroup .

Así que para cambiar las animaciones, puede crear una instancia de LayoutTransition , establecer Animator para la transición que necesita cambiar y luego asignar esa instancia a ViewGroup través de setLayoutTransition() .

En mi caso el resultado es:

 Animator scaleDown = ObjectAnimator.ofPropertyValuesHolder((Object)null, PropertyValuesHolder.ofFloat("scaleX", 1, 0), PropertyValuesHolder.ofFloat("scaleY", 1, 0)); scaleDown.setDuration(300); scaleDown.setInterpolator(new OvershootInterpolator()); Animator scaleUp = ObjectAnimator.ofPropertyValuesHolder((Object)null, PropertyValuesHolder.ofFloat("scaleX", 0, 1), PropertyValuesHolder.ofFloat("scaleY", 0, 1)); scaleUp.setDuration(300); scaleUp.setStartDelay(300); scaleUp.setInterpolator(new OvershootInterpolator()); LayoutTransition itemLayoutTransition = new LayoutTransition(); itemLayoutTransition.setAnimator(LayoutTransition.APPEARING, scaleUp); itemLayoutTransition.setAnimator(LayoutTransition.DISAPPEARING, scaleDown); ViewGroup av = (ViewGroup)v.findViewById(R.id.animated_layout); av.setLayoutTransition(itemLayoutTransition); 

Más información en la documentación de referencia de LayoutTransition .

  • Cómo diseñar o diseñar correctamente un cajón de navegación de Android
  • InstantiateItem en PagerAdapter y AddView en la confusión ViewPager
  • Android: TextView dentro de ScrollView: Cómo limitar la altura
  • ActionBar Tabs con fragmentos en rotación
  • Cómo establecer la altura de la disposición relativa dinámicamente en android
  • Java.lang.NullPointerException: Intenta invocar el método virtual 'int android.view.ViewGroup.getPaddingLeft ()' en una referencia de objeto nulo
  • Cómo cambiar el color de la línea en EditText
  • Cómo alinear el botón por centro y hacer offset
  • Android - WrapPanel equivalente?
  • Altura mínima del botón de Android: 48dp = 9mm?
  • Android tablelayout y cambiar el tamaño de los botones
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.