[Android动画] 补间动画-动画集合类( AnimationSet)六

AnimationSet类是Android系统中的动画集合类,用于控制View对象进行多个动作的组合,该类继承于Animation类。 AnimationSet类中的很多方法都与Animation类一致,该类中最常用的方法便是addAnimation方法,该方法用于为动画集合对象 添加动画对象。

【基本语法】public void addAnimation (Animation a)

其中,参数a为Animation动画对象,可以是前述任何一种补间动作。

【实例演示】下面通过代码来演示如何设置一个组合动画效果。

public class firstActivity extends Activity {  
/** Called when the activity is first created. */  
@Override  
public void onCreate(Bundle savedInstanceState) {               //重载onCreate方法  
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.main);  
 
    final ImageView image=(ImageView)findViewById(R.id.imageView1); //ImageView对象  
    Button btn1=(Button)findViewById(R.id.button1);             //按钮对象  
    Button btn2=(Button)findViewById(R.id.button2);  
    final Animation translateAnimation=new TranslateAnimation(0,300,0,300);                                                                 //设置位置变化动画  
    final Animation scaleAnimation = new   
     ScaleAnimation(0f,1f,0f,1f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);  
                                                            //设置尺寸变化动画  
    final Animation alphaAnimation=new AlphaAnimation(0.1f,1.0f);   //设置透明度变化动画  
    btn1.setOnClickListener(new View.OnClickListener() {            //设置监听器  
          
        @Override  
        public void onClick(View v) {  
            // TODO Auto-generated method stub  
            translateAnimation.setDuration(10000);      //设置位置变化动画的持续时间  
            scaleAnimation.setDuration(10000);          //设置尺寸变化动画的持续时间  
            alphaAnimation.setDuration(10000);          //设置透明度渐变动画的持续时间  
            AnimationSet set=new AnimationSet(true);    //创建动画集对象  
            set.addAnimation(translateAnimation);       //添加位置变化动画  
            set.addAnimation(scaleAnimation);           //添加尺寸变化动画  
            set.addAnimation(alphaAnimation);           //添加透明度渐变动画  
            set.setFillAfter(true);                 //停留在最后的位置  
            set.setFillEnabled(true);  
            image.setAnimation(set);                    //设置动画  
            set.startNow();                         //启动动画  
        }  
    });  
    btn2.setOnClickListener(new View.OnClickListener() {    //设置监听器  
          
        @Override  
        public void onClick(View v) {  
            // TODO Auto-generated method stub  
            set.cancel();                               //取消动画执行  
        }  
    });  
}  
}  @Override  public void onCreate(Bundle savedInstanceState) {               //重载onCreate方法      super.onCreate(savedInstanceState);      setContentView(R.layout.main);       final ImageView image=(ImageView)findViewById(R.id.imageView1); //ImageView对象      Button btn1=(Button)findViewById(R.id.button1);             //按钮对象      Button btn2=(Button)findViewById(R.id.button2);      final Animation translateAnimation=new TranslateAnimation(0,300,0,300);                                                                 //设置位置变化动画      final Animation scaleAnimation = new        ScaleAnimation(0f,1f,0f,1f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);                                                              //设置尺寸变化动画      final Animation alphaAnimation=new AlphaAnimation(0.1f,1.0f);   //设置透明度变化动画      btn1.setOnClickListener(new View.OnClickListener() {            //设置监听器                    @Override          public void onClick(View v) {              // TODO Auto-generated method stub              translateAnimation.setDuration(10000);      //设置位置变化动画的持续时间              scaleAnimation.setDuration(10000);          //设置尺寸变化动画的持续时间              alphaAnimation.setDuration(10000);          //设置透明度渐变动画的持续时间              AnimationSet set=new AnimationSet(true);    //创建动画集对象              set.addAnimation(translateAnimation);       //添加位置变化动画              set.addAnimation(scaleAnimation);           //添加尺寸变化动画              set.addAnimation(alphaAnimation);           //添加透明度渐变动画              set.setFillAfter(true);                 //停留在最后的位置              set.setFillEnabled(true);              image.setAnimation(set);                    //设置动画              set.startNow();                         //启动动画          }      });      btn2.setOnClickListener(new View.OnClickListener() {    //设置监听器                    @Override          public void onClick(View v) {              // TODO Auto-generated method stub              set.cancel();                               //取消动画执行          }      });  }  }

在这段代码中,首先构造了位置变化、尺寸变化和透明度变化动画的对象。然后,在第一个按钮监听器中分别设置了动画的持续时间,并通过 addAnimation方法添加到动画集中,之后启动该动画。在第二个按钮监听器中取消该动画。读者运行这段代码,将会看到如图9.13所示的显示效 果。图片从小到大,由浅入深,从左上角向右下角移动。当动画结束的时候,图片对象将停留在结束点的位置,如图9.14所示。

[Android动画] 补间动画-动画集合类( AnimationSet)六 
图9.13  组合动画

[Android动画] 补间动画-动画集合类( AnimationSet)六


你可能感兴趣的:([Android动画] 补间动画-动画集合类( AnimationSet)六)