Cómo cambiar un diseño de altura como animación (mediante programación)

Cómo cambiar un diseño de altura de forma programática como animación?

primero :

Introduzca aquí la descripción de la imagen

después :

Introduzca aquí la descripción de la imagen

Heey Amigo,

Después de probar mi código, vi un pequeño problema. Debido a que "scaleY" utilizado "scaleY" sólo "estira" la vista. Eso significa que si hay algo de texto o algo en la vista, sólo lo estira y no se verá bien. Pruebe con el ValueAnimator en su lugar, sus trabajos más suaves

 public void onClick(View v) { if(!isBig){ ValueAnimator va = ValueAnimator.ofInt(100, 200); va.setDuration(400); va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { public void onAnimationUpdate(ValueAnimator animation) { Integer value = (Integer) animation.getAnimatedValue(); v.getLayoutParams().height = value.intValue(); v.requestLayout(); } }); va.start(); isBig = true; } else{ ValueAnimator va = ValueAnimator.ofInt(200, 100); va.setDuration(400); va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { public void onAnimationUpdate(ValueAnimator animation) { Integer value = (Integer) animation.getAnimatedValue(); v.getLayoutParams().height = value.intValue(); v.requestLayout(); } }); va.start(); isBig = false; } } 

El XML:

 <RelativeLayout android:layout_width="150dp" android:layout_height="100dp" android:layout_centerHorizontal="true" android:background="@android:color/holo_red_dark" android:onClick="onButtonClick" android:clickable="true"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="My Layout"/> </RelativeLayout> 

Respuesta antigua Puede utilizar ObjectAnimator, sólo recuerde para establecer el pivotY(0) por lo que sólo se mueve en la parte inferior. Juega con él mismo para que coincida con tus necesidades 🙂

 private boolean isBig = false; ... public void onClick(View v) { v.setPivotY(0f); if(!isBig){ ObjectAnimator scaleY = ObjectAnimator.ofFloat(v, "scaleY", 2f); scaleY.setInterpolator(new DecelerateInterpolator()); scaleY.start(); isBig = true; } else{ ObjectAnimator scaleY = ObjectAnimator.ofFloat(v, "scaleY", 1f); scaleY.setInterpolator(new DecelerateInterpolator()); scaleY.start(); isBig = false; } } 
  • Cómo agregar vista al diseño XML android
  • Cómo restablecer el estado de animación?
  • Parpadeo de la animación de Android
  • La vista desaparece cerca del final de la animación RotationY
  • Colapsar CardView dentro de RecyclerView al animar
  • ¿Cómo puedo utilizar el marco de animación dentro del lienzo?
  • Diseño expandir animación
  • Cómo implementar la animación de texto de lista personalizada
  • Añadir animación diferente para diferentes fotogramas en vídeo con ffmpeg android
  • Expandir / Contraer Animación: Pequeño retraso || MeasureSpec devuelve un valor incorrecto
  • RippleDrawable - Mostrar efecto de rizado por programación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.