2011-07-03 8 views
7

He estado luchando recientemente con el marco TranslateAnimation proporcionado por la biblioteca de UI de Android.TranslateAnimation aplicado a un rastro de hojas de ImageView

He diseñado un RelativeLayout que tiene un GridView ocupando el 80% de la pantalla más o menos y un ImageView en la parte inferior de la pantalla. Se supone que este último se mueve constantemente por la parte inferior de la pantalla, con direcciones aleatorias.

Aquí está el diseño:

<ImageView 
    android:id="@+id/bottom_fish" 
    android:layout_alignParentBottom="true" 
    android:adjustViewBounds="true" 
    android:cropToPadding="true" 
    android:scaleType="centerInside" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="40dp" 
    android:layout_alignParentLeft="true" 
    android:layout_weight="0" 
    android:src="@drawable/little_fish_right" 
></ImageView> 

<GridView 
    android:id="@+id/gridview" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_above="@id/mouin_bottom" 
    android:columnWidth="90dp" 
    android:numColumns="4" 
    android:verticalSpacing="10dp" 
    android:horizontalSpacing="10dp" 
    android:stretchMode="columnWidth" 
    android:gravity="center" 
/> 

y aquí está la TranslateAnimation:

TranslateAnimation slide = new TranslateAnimation(x0, newX, y0, newY); 
slide.setFillAfter(true); 
slide.setInterpolator(new LinearInterpolator()); 
slide.setDuration(duration); 
slide.setAnimationListener(animationListener); 
iv.startAnimation(slide); 

x0 += newX; 
y0 += newY; 

El AnimationListener asignado a la animación sólo llama a este método en la función onAnimationEnd .

El asunto es que cuando la imagen se mueve de derecha a izquierda, eventualmente deja rastros de mapa de bits en la pantalla, que se elimina después de un tiempo.

¿Alguna idea de dónde se puede presentar el problema?

Gracias.

+0

intenta dar falso en el método setFillAfter(). slide.setFillAfter (false); –

Respuesta

0

Creo que es un problema de diseño de diseño. Trate de darle

android:layout_width="fill_parent" 

en lugar de

android:layout_width="wrap_content" 
1

Después de llamar iv.startAnimation(slide), puede que tenga que llamar a invalidate() en el elemento principal de la vista. He tenido ese problema antes. Supongo que ya resolvió el problema, pero espero que esto sirva para otros.

Cuestiones relacionadas