应用于 ImageView 的 TranslateAnimation 留下了轨迹

8
我最近在使用Android UI库提供的TranslateAnimation框架时遇到了困难。
我设计了一个RelativeLayout,其中有一个GridView占据了屏幕的大约80%,底部还有一个ImageView。后者应该不断地在屏幕底部移动,并随机改变方向。
以下是布局:
<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"
/>

这里是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;

动画监听器分配给动画只是在onAnimationEnd函数中调用此方法。

问题在于当图像从右向左移动时,它最终会在屏幕上留下位图痕迹,一段时间后才被删除。

有任何想法问题可能出在哪里?

谢谢。


尝试在setFillAfter()方法上设置false。slide.setFillAfter(false); - Onur A.
2个回答

1
在调用iv.startAnimation(slide)后,您可能需要在视图的父级上调用invalidate()。我之前遇到过这个问题。我假设您以前已经解决了这个问题,但希望对其他人有所帮助。

0

我认为这是一个布局设计问题。尝试给予

android:layout_width="fill_parent" 

而不是

android:layout_width="wrap_content"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接