Animar el ancho de ImageView sin escala

Estoy tratando de animar un ImageView por lo que se muestra lentamente de izquierda a derecha. Cuando le pregunté esto antes de que tuviera problemas para explicar lo que quería, por lo que esta vez he creado el efecto deseado con HTML / JS:

Http://jsfiddle.net/E2uDE/

¿Cuál sería la mejor manera de conseguir este efecto en Android?

Intenté cambiar el scaleType y después aplicar un ScaleAnimation directamente a ese ImageView:

Diseño:

<ImageView android:id="@+id/graphImage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:scaleType="centerCrop" android:background="@android:color/transparent" android:contentDescription="@string/stroom_grafiek" /> 

Java:

 scale = new ScaleAnimation((float)0, (float)1, (float)1, (float)1, Animation.RELATIVE_TO_SELF, (float)0, Animation.RELATIVE_TO_SELF, (float)1); scale.setDuration(1000); graphImage.startAnimation(scale); 

Pero esto stil escala la imagen.

También intenté envolver el ImageView en un FrameLayout, con la esperanza de poder animar el FrameLayout:

 <FrameLayout android:layout_width="70dp" android:layout_height="fill_parent" android:clipChildren="true""> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|left|clip_horizontal" /> </FrameLayout> 

Esto todavía intentará escalar mi ImageView para caber dentro de FrameLayout.

Hay varias maneras de hacerlo: una forma es simplemente cambiar el clip en el lienzo (es decir, el área donde se permite dibujar la vista) del ImageView dibuja su imagen. Aumentar lentamente el borde derecho de los límites del dibujo dará como resultado el mismo efecto que en el enlace de ejemplo.

He escrito algunos ejemplos de código que ilustra esta técnica. Si descarga / construye / ejecuta el proyecto, al hacer clic en la imagen se ejecutará la animación de revelar.

Eche un vistazo al método onDraw de la clase CoveredImageView , que tiene la siguiente estructura básica:

 @Override protected void onDraw(Canvas canvas) { ... canvas.getClipBounds(mRect); mRect.right = ...; canvas.clipRect(mRect); ... super.onDraw(canvas); ... invalidate(); } 

El clip se ajusta y entonces se invoca invalidate (), haciendo que onDraw () sea llamado de nuevo.

También he escrito algún código para interpolar el valor de clip correcto del tiempo transcurrido, que no depende de ninguna versión particular de Android. Sin embargo, como nota, desde Android 3.0 hay un nuevo marco de animación y una clase ValueAnimator que podría ayudar a realizar dichas tareas.

Podrías solapar tu imagen con otra, por ejemplo una con un dibujo blanco. A continuación, puede animar la superposición de imagen sin preocuparse por la escala hasta que tenga un ancho de 0 y eliminarlo. Para que funcione usted tiene que colocar su imageView en un RelativeLayout ofc.

  • Falta el diccionario predeterminado en AutoCompleteTextView / MultiAutoCompleteTextView
  • ¿Qué es android: layout_marginStart
  • Holoeverywhere: cómo eliminar mediante programación en tiempo de ejecución la barra de acción de una actividad
  • Edittext Mensaje de error de validación en android?
  • Método onClick no funciona correctamente después de que NestedScrollView desplazado
  • ¿Qué propiedad controla el fondo desplegable de Spinner?
  • Altura de la vista de notificación de estado personalizado de Android
  • Disposición / control de Android para mostrar "flecha" de la pestaña abierta a la lista / menú?
  • ¿Puedo mostrar textOn y textOff en un switch?
  • Las letras se reemplazan por bloques en la actividad de Android
  • LinearLayout marcado si se utiliza en CardView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.