AnimationSet类是Android系统中的动画集合类,用于控制View对象进行多个动做的组合,该类继承于Animation类。 AnimationSet类中的不少方法都与Animation类一致,该类中最经常使用的方法即是addAnimation方法,该方法用于为动画集合对象 添加动画对象。
【基本语法】public void addAnimation (Animation a)ide
其中,参数a为Animation动画对象,能够是前述任何一种补间动做。动画
【实例演示】下面经过代码来演示如何设置一个组合动画效果。spa
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所示。code
![]() |
图9.13 组合动画 |