我最近一直在与android ui库提供的translateanimation框架作斗争。
我设计了一个相对的布局,它有一个网格视图,大约占屏幕的80%,在屏幕底部有一个图像视图。后者应该是不断地在屏幕底部移动,方向是随机的。
布局如下:

<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 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只对onanimationEnd函数调用此方法。
问题是,当图像从右向左移动时,它会在屏幕上留下位图痕迹,并在一段时间后被删除。
知道问题出在哪里吗?
谢谢您。

最佳答案

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

07-26 01:10