我已经成功地使用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);
}
现在,我希望当图像到达屏幕底部时,它应该开始移回顶部。我该怎么做呢?
注:做了反向模式。请看代码。但现在的问题是,当从下到上移动时,它会留下线条。就像附加的图像一样。如何删除这些行?
发布于 2012-04-12 20:00:03
根据以下内容修改代码:
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
源文件中。
<?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>
我希望它能对你有所帮助。
发布于 2011-09-02 17:44:04
您需要设置repeat属性
android:repeatMode
整型。动画到达动画末尾时的行为方式。android:repeatCount必须设置为正整数或"-1“,此属性才会生效。设置为" reverse“可使动画在每次迭代时反转方向,或设置为"repeat”可使动画每次循环从头开始。
Animation a;
a.setRepeatMode(Animation.REVERSE);
发布于 2011-09-02 17:22:34
我认为你必须删除mAnimation.setFillAfter(true);
,因为这意味着它将永久停留在它停止的地方。
为了返回到初始位置,您可以为上下移动创建一个完整的动画集,或者在第一个完成时创建两个单独的动画集,然后开始第二个动画集,尽管没有理由遵循这种方法。
https://stackoverflow.com/questions/7281276
复制相似问题