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.

  • ¿Cuál es el uso del layoutinflator?
  • ¿Cómo puedo configurar el degradado de color de fondo mediante programación en una barra de título personalizado?
  • Android- cómo programar una vista entre las vistas en el diseño pre-cargado desde el XML?
  • Tamaño de las imágenes en imageview android
  • ¿Cómo evitar el reajuste total de la jerarquía de vista cuando se utiliza EditText?
  • ¿Cuál es el significado de xmlns: herramientas en el diseño de Android XML?
  • El título de la barra de herramientas desaparece al agregar vistas
  • ¿Cómo especifico el ancho y la altura de las celdas de Android GridLayout en medidas relativas?
  • Android Cómo ajustar el diseño en el modo de pantalla completa cuando el teclado virtual está visible
  • Android: tabStripEnabled = "false" no funciona
  • Definir IDs dentro del estilo, ¿es seguro o es un desastre?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.