如何在imageview上一次执行两个动画?

时间:2014-09-23 12:36:45

标签: android xml animation

我正在尝试执行动画正在摇动imageview并在时间从左向右移动相同的imageview。我已经编写了我的动画xml文件:

shake_move.xml:

 <?xml version="1.0" encoding="utf-8"?>
 <translate xmlns:android="http://schemas.android.com/apk/res/android"
            android:duration="1500"
            android:fromYDelta="0"
            android:interpolator="@anim/cycle"
            android:toYDelta="15">
   <set>
    <translate
        android:duration="2500"
        android:fromXDelta="0"
        android:toXDelta="100%p" />
    </set> 

</translate>

cycle.xml:

 <?xml version="1.0" encoding="utf-8"?>
 <cycleInterpolator xmlns:android="http://schemas.android.com/apk/res/android" 
                    android:cycles="4"
  />

通过使用上面的xml文件我实现如下:

  Animation shakMoveAnim = AnimationUtils.loadAnimation(MoveAnimImage.this, R.anim.shake_move);
  ((ImageView)findViewById(R.id.imageView1)).startAnimation(shakMoveAnim);

从上面的实现中我只得到一个动画是从左到右移动图像视图但不同时抖动图像视图。

请帮我同时执行摇动和移动图像视图

2 个答案:

答案 0 :(得分:0)

Animation Set

用户这个。将少量动画添加到AnimationSet。

<set xmlns:android="http://schemas.android.com/apk/res/android"
  android:shareInterpolator="true"
    android:fillAfter="true">

    <translate
      android:duration="300"
      android:startOffset="0"
      android:fromXDelta="0"
      android:fromYDelta="0"
      android:toXDelta="100"
      android:toYDelta="100" />

    <scale
      android:duration="300"
      android:startOffset="300"
      android:fromXScale="1.0"
      android:fromYScale="1.0"
      android:toXScale="0.0"
      android:toYScale="0.0" />

  </set>

答案 1 :(得分:0)

您只使用了一个只有一个翻译动画的Set。哪个不行。

尝试将两个翻译动画放在一个Set中。

示例摘录:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@anim/cycle" >

    <translate
        android:duration="2500"
        android:fromYDelta="0"
        android:toYDelta="15" />
    <translate
        android:duration="2500"
        android:fromXDelta="0"
        android:toXDelta="100%p" />

</set>

你也可以尝试一下这个:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@anim/cycle" >

    <rotate
        android:duration="2500"
        android:fromDegrees="-5"
        android:pivotX="50%"
        android:pivotY="50%"
        android:repeatCount="5"
        android:repeatMode="reverse"
        android:toDegrees="5" />
    <translate
        android:duration="2500"
        android:fromXDelta="0"
        android:toXDelta="100" 
        android:repeatCount="0"/>

</set>

您需要根据您的要求修复repeatCount和delta。

希望这有帮助。