AppBarLayout.setExpanded (boolean, true) animación extraña en la biblioteca de soporte 23.1.1

En mi aplicación, AppBarLayout o contrajo AppBarLayout en un evento específico mediante setExpanded(boolean, true) .

Tengo un buen resultado, con una animación rápida y fluida usando com.android.support:design:23.1.0 , luego actualizé a 23.1.1 y la animación fue muy lenta y no muy rápida.

En el código fuente de android.support.design.widget.AppBarLayout , encontré el problema en animateOffsetTo (en public static class Behavior extends HeaderBehavior<AppBarLayout> ), que en la versión 23.1.0 era así:

 private void animateOffsetTo(final CoordinatorLayout coordinatorLayout, final AppBarLayout child, int offset) { if (mAnimator == null) { mAnimator = ViewUtils.createAnimator(); mAnimator.setInterpolator(AnimationUtils.DECELERATE_INTERPOLATOR); mAnimator.setUpdateListener(new ValueAnimatorCompat.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimatorCompat animator) { setHeaderTopBottomOffset(coordinatorLayout, child, animator.getAnimatedIntValue()); } }); } else { mAnimator.cancel(); } mAnimator.setIntValues(getTopBottomOffsetForScrollingSibling(), offset); mAnimator.start(); } 

Y en la versión 23.1.1 es así:

 private void animateOffsetTo(final CoordinatorLayout coordinatorLayout, final AppBarLayout child, final int offset) { final int currentOffset = getTopBottomOffsetForScrollingSibling(); if (currentOffset == offset) { if (mAnimator != null && mAnimator.isRunning()) { mAnimator.cancel(); } return; } if (mAnimator == null) { mAnimator = ViewUtils.createAnimator(); mAnimator.setInterpolator(AnimationUtils.DECELERATE_INTERPOLATOR); mAnimator.setUpdateListener(new ValueAnimatorCompat.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimatorCompat animator) { setHeaderTopBottomOffset(coordinatorLayout, child, animator.getAnimatedIntValue()); } }); } else { mAnimator.cancel(); } // Set the duration based on the amount of dips we're travelling in final float distanceDp = Math.abs(currentOffset - offset) / coordinatorLayout.getResources().getDisplayMetrics().density; mAnimator.setDuration(Math.round(distanceDp * 1000 / ANIMATE_OFFSET_DIPS_PER_SECOND)); mAnimator.setIntValues(currentOffset, offset); mAnimator.start(); } 

¿Cómo puedo cambiar la animación expand / contract y hacer es más rápido?

El problema fue reportado y fijado

Simplemente actualice la biblioteca a la versión 25.3.1.

  • Guardar BottomNavigationVer el elemento seleccionado durante la rotación de la pantalla
  • Cómo configurar la elevación de un AppBarLayout mediante programación en la Biblioteca de soporte de Android v24.0.0?
  • Cambiar la barra de herramientas y la barra de herramientas CollapsingToolbarLayout mediante programación
  • Establecer layout_anchor en tiempo de ejecución en FloatingActionButton
  • Cómo ocultar la barra de herramientas cuando desplazamiento de contenido en android
  • Android BottomSheetDialogFragment no se expande por completo
  • Biblioteca de compatibilidad de diseño: qué versión usar con SDK v21
  • Android CollapsingToolbarLayout Título de fondo
  • BottomNavigationView muestra los iconos y las etiquetas de texto en todo momento
  • Android KitKat: android.view.InflateException: Error al inflar la clase android.support.design.widget.NavigationView
  • Uso de BottomSheetBehavior con un CoordinatorLayout interno
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.