1

我创建了以下动画:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:interpolator="@android:anim/anticipate_overshoot_interpolator"
     >
  <translate
      android:fromXDelta="0"
      android:toXDelta="100%p"
      android:duration="500"
     />
  <translate
      android:fromXDelta="-100%p"
      android:toXDelta="0"
      android:startOffset="500"
      android:duration="500"/>
</set>

我在 Android 2.3.6 手机上对其进行了测试,动画按顺序进行但反转。首先它从左到中,然后从中到右。我怎样才能以正确的顺序播放它?

4

3 回答 3

1
final ImageView iv = new ImageView(this);
iv.setScaleType(ScaleType.CENTER);
final Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.layer0);
iv.setImageBitmap(b);
OnClickListener l = new OnClickListener() {
    @Override
    public void onClick(View v) {
        float x = (iv.getWidth() + b.getWidth()) / 2;
        AnimationSet set = new AnimationSet(true);
        set.setFillBefore(false);

        Animation a;

        a = new TranslateAnimation(0, x, 0, 0);
        a.setDuration(500);
        a.setFillAfter(false);
        a.setFillBefore(false);
        a.setFillEnabled(true);
        set.addAnimation(a);

        a = new TranslateAnimation(-x, 0, 0, 0);
        a.setStartOffset(500);
        a.setDuration(500);
        a.setFillAfter(false);
        a.setFillBefore(false);
        a.setFillEnabled(true);
        set.addAnimation(a);

        iv.startAnimation(set);
    }
};
iv.setOnClickListener(l);
setContentView(iv);
于 2013-09-16T07:57:50.050 回答
0

由于我无法修改他们的命令,我最终创建了两个单独的动画并使用 AnimationListener 来启动第二个。

于 2013-09-15T16:44:41.627 回答
0

您只需添加一个 set 属性元素即可 android:repeatMode="reverse"。因此你的代码应该是..

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:interpolator="@android:anim/anticipate_overshoot_interpolator"
     android:repeatMode="reverse"
     >
  <translate
      android:repeatCount="infinite"
      android:fromXDelta="0"
      android:toXDelta="100%p"
      android:duration="2500"

     />
 <!--  <translate
      android:fromXDelta="-100%p"
      android:toXDelta="0"
      android:startOffset="500"
      android:duration="500"/> -->
</set>
于 2014-01-08T14:16:56.193 回答