Animación de Android Alpha

Tengo animación

<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/linear_interpolator"> <alpha android:fromAlpha="0.2" android:toAlpha="1.0" android:duration="500"/> </set> 

Y ImageView

 <ImageView android:id="@+id/listViewIcon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/settings" android:alpha="0.2"/> 

Y código:

 final Animation anim = AnimationUtils.loadAnimation(this, R.anim.alpha); final ImageView iv = (ImageView) findViewById(R.id.listViewIcon); anim .setFillAfter(true); iv.startAnimation(anim); 

Así que al principio tengo ImageView con alfa 0.2 y al final quiero tener ImageView con alfa 1. Pero no funciona así – cuando la animación comienza más alfa se agrega y la animación termina con alfa 0.2

¿Qué tengo que cambiar para animar mi imagen de 0.2-> 1?

He comprobado con diversos ajustes – fijé android: alfa = "1.0", fromAlpa = "1.0" toAlpha = "0.2" trabaja como esperaba – de alfa 1 a 0.2. Parece que alfa de ImageView se multiplica por alfa de animación …

Prueba esto

 AlphaAnimation animation1 = new AlphaAnimation(0.2f, 1.0f); animation1.setDuration(1000); animation1.setStartOffset(5000); animation1.setFillAfter(true); iv.startAnimation(animation1) 

El ajuste de alfa a 1 antes de comenzar la animación funcionó para mí:

 AlphaAnimation animation1 = new AlphaAnimation(0.2f, 1.0f); animation1.setDuration(500); iv.setAlpha(1f); iv.startAnimation(animation1); 

Al menos en mis pruebas, no hay parpadeo debido a la configuración de alfa antes de iniciar la animación. Simplemente funciona bien.

 <ImageView android:id="@+id/listViewIcon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/settings"/> 

Quitar android:apha=0.2 de XML-> ImageView.

Hm …

La cosa está mal, y posiblemente en el funcionamiento adecuado de las animaciones en la API de Android.

El hecho es que cuando usted fija en su código el valor del alpha de 0.2f se basa en los ajustes en el archivo del xml para android significa que:

 0.2f = 0.2f of 0.2f (20% from 100%) ie from 0.2f / 5 = 0.04f 1f = 0.2f 

Por lo tanto, su animación funciona de 0,04f a 0,2f

Flag setFillAfter(true) ciertamente funciona, pero debes entender que al final de tu animación ImageView tendrá el valor alpha 0.2f en lugar de uno, porque especificas 0.2f como valor marginalmente aceptable en la animación (un tipo de alpha máximo canal).

Así que si quieres tener el resultado deseado llevará toda tu lógica a tu código y manipularás animaciones en código en lugar de determinar en xml.

Debes entender que tus animaciones dependen directamente de dos cosas:

  • LayoutParams de Vista Animada
  • Parámetros de animación.

Los parámetros de animación manipulan sus LayoutParams en los métodos setFillAfter \ setFillBefore .

Si desea aplicar la animación directamente con un código de pasta listo para copiar, eche un vistazo aquí

  • En android, ¿cómo hacer que una imagen crezca desde un punto usando animación?
  • Crear animación de escaneado utilizando el estudio de Android
  • Cómo mostrar parte de la imagen en la pantalla al final de la animación
  • Android: Flip Animation utilizando XML para animación en android
  • ¿Cómo puedo programar una animación circular rotatoria como esta (foto adjunta)? Androide
  • Cómo hacer la animación 2D en Unity
  • Cómo agregar animación a DialogFragment?
  • Cómo obtener una animación inversa de ActivityOptions.makeScaleUpAnimation al terminar la actividad de los niños en android?
  • OverridePendingTransition muestra la segunda actividad demasiado rápido
  • Fragmentos de ViewPager - Transiciones de elementos compartidos
  • Traducir el botón de acción flotante en ViewPager
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.