如何在Android中使用翻译animation连续上下移动图像?

我已经成功地做了一个animation使用Translate Animation意味着图像从顶部到底部。 这里是代码:

 private ImageView mScanner; private Animation mAnimation; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mScanner = (ImageView)findViewById(R.id.Scanner); mAnimation = new TranslateAnimation(0, 0, 0, 500); mAnimation.setDuration(10000); mAnimation.setFillAfter(true); mAnimation.setRepeatCount(-1); mAnimation.setRepeatMode(Animation.REVERSE); mScanner.setAnimation(mAnimation); mScanner.setVisibility(View.VISIBLE); } 

现在我想要当图像到达屏幕的底部,它应该开始回到顶部。 我怎样才能做到这一点?

注意:完成反向模式。 请参阅代码。 但现在的问题是,从底部到顶部移动时会留下线条。 像附加的图像。 如何删除这一行? 截图

Solutions Collecting From Web of "如何在Android中使用翻译animation连续上下移动图像?"

根据这个修改你的代码:

  mScanner.setVisibility(View.VISIBLE); mAnimation = new TranslateAnimation( TranslateAnimation.ABSOLUTE, 0f, TranslateAnimation.ABSOLUTE, 0f, TranslateAnimation.RELATIVE_TO_PARENT, 0f, TranslateAnimation.RELATIVE_TO_PARENT, 1.0f); mAnimation.setDuration(10000); mAnimation.setRepeatCount(-1); mAnimation.setRepeatMode(Animation.REVERSE); mAnimation.setInterpolator(new LinearInterpolator()); mScanner.setAnimation(mAnimation); 

此外,使用XML而不是图像。 请看下面的代码,并把它放在你的ImageView src中。

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line"> <solid android:color="#0000FF"/> <size android:width="480dp" android:height="10dp"/> <corners android:radius="1dp"/> <stroke android:width="3dp" android:color="#000000"/> </shape> 

我希望这会帮助你。

您需要设置重复属性

机器人:REPEATMODE

INT。 当animation到达animation结束时,animation的行为如何。 android:repeatCount必须设置为正整数或“-1”才能使该属性有效。 设置为“倒退”以使每个迭代具有animation反向,或者“重复”以使animation循环每次从头开始。

 Animation a; a.setRepeatMode(Animation.REVERSE); 

我认为你必须删除mAnimation.setFillAfter(true); 因为这意味着它将永久保留在停止的地方。

为了回到最初的位置,要么你可以做一个完整的animation,既可以上下移动,也可以两个分开,第一个完成,然后开始第二个,虽然没有理由遵循这样的方法。