2011-07-03 9 views
7

Niedawno zmagałem się z ramą TłumaczAnimation dostarczoną przez bibliotekę interfejsu użytkownika Androida.TranslacjaAnimacja zastosowana do ścieżki odchodzenia ImageView

Zaprojektowałem RelativeLayout, który ma GridView zajmujący 80% ekranu mniej więcej i ImageView u dołu ekranu. Ten ostatni powinien ciągle poruszać się po ekranie, z przypadkowymi kierunkami.

Oto układ:

<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" 
/> 

A oto 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; 

AnimationListener przydzielony do animacji po prostu wywołuje tę metodę na funkcję onAnimationEnd .

Chodzi o to, że gdy obraz porusza się od prawej do lewej, w efekcie pozostawia ślady bitmapy na ekranie, po pewnym czasie usuwane.

Każdy pomysł, w którym problem może zostać umieszczony?

Dziękuję.

+0

spróbuj podać wartość false w metodzie setFillAfter(). slide.setFillAfter (false); –

Odpowiedz

0

Myślę, że jest to problem z zaprojektowaniem układu. Spróbuj dając

android:layout_width="fill_parent" 

zamiast

android:layout_width="wrap_content" 
1

Po wywołaniu iv.startAnimation(slide) może trzeba zadzwonić invalidate() na rodzica w widoku. Już wcześniej miałem ten problem. Zakładam, że wcześniej rozwiązałeś problem, ale mam nadzieję, że będzie to pomocne dla innych.