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.

2 Solutions collect form web for “Animar el ancho de ImageView sin escala”

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.

  • ¿Hay una manera de compartir un mismo LayoutManager entre múltiples RecyclerViews anidados
  • Cómo deshabilitar detrás de ver haga clic en evento Framelayout
  • Nuevo error de la biblioteca de diseño de Android con AppBarLayout y barra de herramientas
  • Android TextView: Cambiar el color del texto al hacer clic
  • Cómo agregar automáticamente miles de separadores como número se ingresa en EditText
  • Android: establecer el estilo de vista mediante programación
  • Android ConstraintLayout genera valores absolutos
  • ¿Actualizar todas las vistas en android?
  • ¿Qué método de actividad se llama después de todos los métodos de disposición?
  • FindViewById () no encontró la vista
  • Cómo establecer la misma anchura y altura de un botón
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.