关于顺序执行的话,你可以尝试一下AnimationListener
animation.setAnimationListener(new AnimationListener() {

@Override
public void onAnimationStart(Animation animation) {
}

@Override
public void onAnimationRepeat(Animation animation) {
}

@Override
public void onAnimationEnd(Animation animation) {
//在这里开始执行下一个动画即可
}
});

解决方案 »

  1.   

    3.0之后使用AnimatorSet ,Builder, 3.0之前使用nineoldandroids这个第三方库,不然的话3.0后面只能用动画监听器的方法,属性动画是3.0之后一个非常好的动画包,学习的时候多看最新的apidemo和support demo,具体的用法自己看api吧
      

  2.   

    无限次的话可以试试runnable。比如两个动画加一起是5秒,那你就每5秒执行一次这个runnable。或者在第二个动画结束的时候再调用第一个动画。这不就无限循环了么。
      

  3.   

    看了你的需求,由于时间比较匆忙,我用了一种比较取巧的方式做出了你要的效果。代码如下:
    public class MainActivity extends Activity {
    private ImageView image1, image2; @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main); image1 = (ImageView) findViewById(R.id.image1);
    image2 = (ImageView) findViewById(R.id.image2); startScale1(image1);
    startScale2(image2);
    } public void startScale1(View v) {
    ObjectAnimator objectAnimator1 = ObjectAnimator.ofFloat(v, "ScaleX",
    1.0f, 1.5f);
    objectAnimator1.setRepeatCount(Animation.INFINITE);
    objectAnimator1.setInterpolator(new LinearInterpolator());
    objectAnimator1.setDuration(4000).start(); ObjectAnimator objectAnimator2 = ObjectAnimator.ofFloat(v, "ScaleY",
    1.0f, 1.5f);
    objectAnimator2.setRepeatCount(Animation.INFINITE);
    objectAnimator2.setInterpolator(new LinearInterpolator());
    objectAnimator2.setDuration(4000).start();
    } public void startScale2(View v) {
    ObjectAnimator objectAnimator1 = ObjectAnimator.ofFloat(v, "ScaleX",
    1.0f, 1.8f);
    objectAnimator1.setRepeatCount(Animation.INFINITE);
    objectAnimator1.setInterpolator(new LinearInterpolator());
    objectAnimator1.setStartDelay(2000);  //用到了开始延迟这个属性,呵呵,比较取巧。
    objectAnimator1.setDuration(4000);
    objectAnimator1.start(); ObjectAnimator objectAnimator2 = ObjectAnimator.ofFloat(v, "ScaleY",
    1.0f, 1.8f);
    objectAnimator2.setRepeatCount(Animation.INFINITE);
    objectAnimator2.setInterpolator(new LinearInterpolator());
    objectAnimator2.setStartDelay(2000);
    objectAnimator2.setDuration(4000);
    objectAnimator2.start();
    }}代码比较乱,自己整理下吧。
    方法不止一种,关于动画的网上很多资料,不要拘泥于形势,这个是比较简单的了。呵呵。
      

  4.   

    补充,不要把StartDelay和Duration的时间写成一样,要不给人的感觉就是一起动画,除非你的2个动画差别很大。
      

  5.   

    再补充下:ObjectAnimator也可以写成XML形势的,这个你可以去百度下,因为马上下班了,不太想动了,呵呵,而且,自己做了后印象更深。
    注:在res目录下新建文件夹时,不要写成anim文件夹哦,还是给你代码吧。呵呵。
    JAVA代码
    public class MainActivity extends Activity {
    private ImageView image1, image2;
    private AnimatorSet animatorSet, animatorSet2; @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main); image1 = (ImageView) findViewById(R.id.image1);
    image2 = (ImageView) findViewById(R.id.image2); animatorSet = (AnimatorSet) AnimatorInflater.loadAnimator(this,
    R.animator.scale);
    animatorSet2 = (AnimatorSet) AnimatorInflater.loadAnimator(this,
    R.animator.scale);
    animatorSet.setTarget(image1);
    animatorSet2.setTarget(image2);
    animatorSet2.setStartDelay(2000);
    animatorSet.start();
    animatorSet2.start();
    }   scale.xml的代码。<set xmlns:android="http://schemas.android.com/apk/res/android"
        android:ordering="together" >    <objectAnimator
            android:duration="4000"
            android:interpolator="@android:anim/linear_interpolator"
            android:propertyName="scaleX"
            android:repeatCount="infinite"
            android:valueFrom="1.0"
            android:valueTo="1.5"
            android:valueType="floatType" >
        </objectAnimator>
        <objectAnimator
            android:duration="4000"
            android:interpolator="@android:anim/linear_interpolator"
            android:propertyName="scaleY"
            android:repeatCount="infinite"
            android:valueFrom="1.0"
            android:valueTo="1.5"
            android:valueType="floatType" >
        </objectAnimator></set>
      

  6.   

    最近太忙了,未能及时回复,看到大家的讨论我学到了很多。我最终采用了一种很简单的方法实现了呼吸效果。
     R.anim.breath_up:
    <scale android:fromXScale = "1.0"
            android:toXScale    = "1.1"
            android:fromYScale  = "1.0"
            android:toYScale    = "1.1"
            android:pivotX      = "0"
            android:pivotY      = "100%"
            android:duration    = "4000"
            android:repeatCount="infinite"
            android:repeatMode="reverse"/>  Animation anim = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.breath_up);
            iv.setAnimation(anim);当然这种方法只能实现简单的,取巧了 android:repeatMode="reverse" 。复杂的动画还得使用Animator。
      

  7.   

    如果不是倒置的动画应该也可以实现,只是应该对animationset设置repeatmode和count吧,两个小anim就不能再设置循环方法了。