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í

  • Android ==> Animación simple?
  • ¿Cómo reanudar y pausar ObjectAnimator en Android para niveles de API por debajo de 19?
  • Cómo establecer ninguna animación para la primera vista de ViewFlipper
  • Animación de fondo panorámica en Android
  • ¿Cómo iniciar la animación de Android desde los valores donde se detuvo?
  • Cómo animar una versión 'clonada', duplicada de Android existente View
  • Temas de XML de animación de Android
  • Circular revela transición para una nueva actividad
  • ¿Cómo implementar animated vector drawables usando la biblioteca de soporte de diseño 23.2?
  • Animación de escala de Android en la vista
  • Cómo animar la ventana emergente de abajo hacia arriba en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.