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 :
- Cómo cambiar el valor de NumberPicker con animación?
- Android RecyclerView con indicador de progreso y animación
- Error de JNI en la animación de transición de escena - Capa supera el máximo
- Android: cambia el margen izquierdo con la animación
- Desplazamiento de la animación en NavigationView
después :
- Animación de desplazamiento personalizado (Inclinación, Card Deck, 3D, etc.)
- AdjustResize con animación
- L-release-like Touch Ripple animación en pre-L
- Android Viewpager salta a la mitad de una página
- Animación de la barra de herramientas con LayoutTransition
- Simple animación de transporte en el diseño de Android no funciona por segunda vez
- ¿Cómo puedo programar una animación circular rotatoria como esta (foto adjunta)? Androide
- Cómo animar el mapa de relleno en android
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 obtener la latititud y la longitud de una imagen en sdcard a mi aplicación?
- Android abortBroadcast no impide que los sms sean transmitidos