如何让imageView从屏幕的一侧到另一侧无限移动? [android动画]

时间:2015-07-13 09:21:35

标签: java xml android-animation translate-animation

这是我的xml代码:

<?xml version="1.0" encoding="utf-8"?>

机器人:repeatCount =&#34;无限&#34;&GT;

    <translate  xmlns:android="http://schemas.android.com/apk/res/android"
        android:fromXDelta="10"
        android:toXDelta="500"
        android:fillAfter="true"
        android:duration="1000"
        >
    </translate>

    <translate xmlns:android="http://schemas.android.com/apk/res/android"
        android:fromXDelta="500"
        android:toXDelta="10"
        android:duration="1000"
        android:fillBefore="true"
        android:startOffset="2000"
        >
    </translate>

这是java代码:

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.page1);
    cloud2 = (ImageView) findViewById(R.id.cloud2);
    Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.clouds_animation);
    cloud2.startAnimation(animation);
    animation.setRepeatCount(Animation.INFINITE);

我已经尝试过了

  • 放&#34; repeatCount =无限&#34;两个翻译,但没有结果
  • 在java代码中以编程方式设置setrepeatCount。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

而不是在xml文件中做2个动画,我用这种方式解决了这个问题:

   TranslateAnimation cloud_moving = new TranslateAnimation(
            Animation.ABSOLUTE, 1450,
            Animation.ABSOLUTE, 10,
            Animation.ABSOLUTE, 0,
            Animation.ABSOLUTE, 0
    );

    cloud_moving.setDuration(6000);
    cloud_moving.setFillAfter(true);
    cloud_moving.setStartOffset(1000);
    cloud_moving.setRepeatCount(Animation.INFINITE);
    cloud_moving.setRepeatMode(Animation.REVERSE);
    cloud2.startAnimation(cloud_moving);

显然,xml等效动画不仅仅是源代码,编码起来效果更好! 来自文档:如果你将重复计数设置为无限并将重复模式设置为反转 - 它将“镜像”自身,即图像将从一侧移动到另一侧,并且不要忘记将填充后设置为真 - 图像动画完成后,它将留在原地......