我最近一直在努力使用Android UI库提供的TranslateAnimation框架。
我设计了一个RelativeLayout,它有一个或多或少占用屏幕80%的GridView,以及屏幕底部的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;
分配给动画的AnimationListener只是在onAnimationEnd函数上调用此方法。
问题是,当图像从右向左移动时,它会在屏幕上留下位图痕迹,一段时间后会被删除。
知道可以解决问题的地方吗?
谢谢。
答案 0 :(得分:1)
致电iv.startAnimation(slide)
后,您可能需要在视图的父级上调用invalidate()
。我以前遇到过这个问题。我假设你之前已经解决了这个问题,但希望这会对其他人有所帮助。
答案 1 :(得分:0)
我认为这是一个布局设计问题。试着给予
android:layout_width="fill_parent"
而不是
android:layout_width="wrap_content"