Animación de escala de Android en la vista
Quiero utilizar ScaleAnimation (programmatically no en xml) para cambiar la altura para ver de 0 a 60% de la altura de los padres. El ancho de la vista es constante y es 50px. La vista está vacía sólo el color de fondo está establecido.
¿Puede alguien darme código para scaleAnim
usando ScaleAnimation de código.
- ¿Cómo implementar TabHost efecto deslizante?
- Cómo configurar el oyente de onclick para ver imágenes animadas
- La animación no funciona
- Animaciones y setVisibility
- Matrix.setTranslate () sólo traduce la superficie visual de la vista y no el área seleccionable?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/layContainer > <View android:layout_width="50px" android:layout_height="fill_parent" android:id="@+id/viewContainer" android:background:"#00f00" /> </LinearLayout> ScaleAnimation scaleAnim = new ScaleAnimation(...);
Vista antes y después de la animación.
- Animar el elemento ListView a la papelera
- RecyclerView - No hay animación en NotifyItemInsert
- Cambiar la duración de la animación ViewPager al deslizar de forma programática
- Haga que un botón ejecute OnClickListener al final de la animación de ripple (tema material)
- Android creando cadena de animación ViewPropertyAnimator
- ¿Cómo realizar una animación de desvanecimiento en la transición de la actividad?
- setAnimation vs startAnimation en android
- Mejor manera de lograr una animación fluida en Android
Aquí hay un recorte de código para hacer exactamente eso.
public void scaleView(View v, float startScale, float endScale) { Animation anim = new ScaleAnimation( 1f, 1f, // Start and end values for the X axis scaling startScale, endScale, // Start and end values for the Y axis scaling Animation.RELATIVE_TO_SELF, 0f, // Pivot point of X scaling Animation.RELATIVE_TO_SELF, 1f); // Pivot point of Y scaling anim.setFillAfter(true); // Needed to keep the result of the animation anim.setDuration(1000); v.startAnimation(anim); }
El constructor ScaleAnimation utilizado aquí toma 8 args, 4 relacionados con el manejo de la escala X que no nos importa (1f, 1f, ... Animation.RELATIVE_TO_SELF, 0f, ...)
.
Los otros 4 args son para la escala Y que nos importa.
startScale, endScale
– En tu caso, 0f, 0.6f
.
Animation.RELATIVE_TO_SELF, 1f
– Especifica dónde se contrae el encogimiento de la vista (denominado pivote en la documentación). Aquí, fijamos el valor del flotador a 1f
porque queremos que la animación comience a crecer la barra desde la parte inferior. Si queríamos que creciera hacia abajo desde la cima, 0f
.
Finalmente, e igualmente importante, es la llamada a anim.setFillAfter(true)
. Si desea que el resultado de la animación se mantenga al final después de completar la animación, debe ejecutarla en el animador antes de ejecutar la animación.
Así que en su caso, puede hacer algo como esto:
View v = findViewById(R.id.viewContainer); scaleView(v, 0f, .6f);
Pruebe este código para crear la animación Escala sin utilizar xml
ScaleAnimation animation = new ScaleAnimation(fromXscale, toXscale, fromYscale, toYscale, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
En XML, esto es lo que uso para lograr el mismo resultado. Puede que esto sea más intuitivo.
scale_up.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <scale android:duration="200" android:fromXScale="1.0" android:fromYScale="0.0" android:pivotX="50%" android:pivotY="100%" android:toXScale="1.0" android:toYScale="1.0" /> </set>
scale_down.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <scale android:duration="200" android:fromXScale="1.0" android:fromYScale="1.0" android:pivotX="50%" android:pivotY="100%" android:toXScale="1.0" android:toYScale="0.0" /> </set>
Ver la animación en el eje X es de 1.0 -> 1.0
que significa que no tiene ningún aumento de escala en esa dirección y se mantiene en el ancho total, mientras que en el eje Y se obtiene 0.0 -> 1.0
escalado, como se muestra en el Gráfico en la pregunta. Espero que esto ayude a alguien.
- Android studio donde está el archivo gradle.properties?
- Adb no se reconoce como comando interno o externo en Windows