Android动画效果

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

http://book.51cto.com/art/201204/328247.htm

第9章  Android动画效果

Android系统提供了两种实现动画的方式,一种是补间动画(Tween Animation),另一种是帧动画(Frame Animation)。补间动画可以实现View组件的移动、放大、缩小以及渐变等效果,帧动画则提供了一种逐帧播放图片的动画方式。无论是补间动画还是帧动画,Android均为其进行了封装,提供了非常简单的应用接口。

9.1  Animation类:动画抽象类

Animation类是Android系统的一个动画抽象类,所有其他一些动画类都要继承该类中的实现方法。Animation类主要用于补间动画效果,提供了动画启动、停止、重复、持续时间等方法。Animation类中的方法适用于任何一种补间动画对象。

9.1.1  setDuration方法:设置持续时间

【功能说明】该方法用于设置动画的持续时间,以毫秒为单位。该方法是设置补间动画时间长度的主要方法,使用非常普遍。

【基本语法】public void setDuration (long durationMillis)

其中,参数durationMillis为动画的持续时间,单位为毫秒(ms)。

setDuration方法的示例可以参阅startNow方法中的示例代码。


9.1.2  startNow方法:立刻启动动画

【功能说明】该方法用于启动执行一个动画。该方法是启动执行动画的主要方法,使用时需要先通过setAnimation方法为某一个View对象设置动画。另外,用户在程序中也可以使用View组件的startAnimation方法来启动执行动画。

【基本语法】public void startNow ()

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

  
  
  1. public class firstActivity extends Activity {  
  2. /** Called when the activity is first created. */  
  3. @Override  
  4. public void onCreate(Bundle savedInstanceState) {               //重载onCreate方法  
  5.     super.onCreate(savedInstanceState);  
  6.     setContentView(R.layout.main);  
  7.  
  8.     final ImageView image=(ImageView)findViewById(R.id.imageView1); //ImageView对象  
  9.     Button btn1=(Button)findViewById(R.id.button1);             //按钮对象  
  10.     final Animation translateAnimation=new TranslateAnimation(0,200,0,200);                                                                 //移动动画效果  
  11.  
  12.     btn1.setOnClickListener(new View.OnClickListener() {            //设置监听器  
  13.           
  14.         @Override  
  15.         public void onClick(View v) {  
  16.             // TODO Auto-generated method stub  
  17.             translateAnimation.setDuration(3000);               //设置动画持续时间  
  18.             image.setAnimation(translateAnimation);             //设置动画效果  
  19.             translateAnimation.startNow();                      //启动动画  
  20.         }  
  21.     });  
  22. }  
  23. }  

在这段代码中,首先初始化了一个移动的动画效果translateAnimation。然后,在按钮监听器中,通过setDuration方法设置动画持续时间,并为image对象设置动画效果,最后使用startNow方法启动动画效果。读者执行这段代码,点击"执行动画"按钮,可以在手机屏幕上看到如图9.1所示的显示效果。图中所示的图片将沿45 方向向右下角移动。

9.1.3  start方法:启动动画

【功能说明】该方法用于启动执行一个动画。该方法是启动执行动画的另一个主要方法,使用时需要先通过setAnimation方法为某一个View对象设置动画。start方法区别于startNow方法的地方在于,start方法可以用于在getTransformation方法被调用时启动动画。

【基本语法】public void start ()

start方法的执行效果类似于startNow方法,这里不再赘述。


9.1.4  cancel方法:取消动画

【功能说明】该方法用于取消一个动画的执行。该方法是取得一个正在执行中的动画的主要方法。cancel方法和startNow方法结合可以实现对动画执行过程的控制。需要注意的是,通过cancel方法取消的动画,必须使用reset方法或者setAnimation方法重新设置,才可以再次执行动画。

【基本语法】public void cancel ()

【实例演示】下面通过代码来演示如何取消动画效果执行。

  
  
  1. public class firstActivity extends Activity {  
  2. /** Called when the activity is first created. */  
  3. @Override  
  4. public void onCreate(Bundle savedInstanceState) {               //重载onCreate方法  
  5.     super.onCreate(savedInstanceState);  
  6.     setContentView(R.layout.main);  
  7.  
  8.     final ImageView image=(ImageView)findViewById(R.id.imageView1); //ImageView对象  
  9.     Button btn1=(Button)findViewById(R.id.button1);             //按钮对象  
  10.     Button btn2=(Button)findViewById(R.id.button2);  
  11.     final Animation translateAnimation=new TranslateAnimation(0,200,0,200);//移动动画效果  
  12.  
  13.     btn1.setOnClickListener(new View.OnClickListener() {            //设置监听器  
  14.           
  15.         @Override  
  16.         public void onClick(View v) {  
  17.             // TODO Auto-generated method stub  
  18.             translateAnimation.setDuration(3000);               //设置动画持续时间  
  19.             image.setAnimation(translateAnimation);             //设置动画效果  
  20.             translateAnimation.startNow();                      //启动动画  
  21.         }  
  22.     });  
  23.     btn2.setOnClickListener(new View.OnClickListener() {            //设置监听器  
  24.           
  25.         @Override  
  26.         public void onClick(View v) {  
  27.             // TODO Auto-generated method stub  
  28.             translateAnimation.cancel();                        /
  29. /取消动画执行  
  30.         }  
  31.     });  
  32. }  
  33. }  

在这段代码中,首先初始化了一个移动的动画效果translateAnimation。然后,在第一个按钮监听器中,通过setDuration方法设置动画持续时间,并为image对象设置动画效果,最后使用startNow方法启动动画效果。在第二个按钮监听器中,调用cancel方法取消动画执行。读者执行这段代码,可以在手机屏幕上看到如图9.2所示的显示效果。当点击"执行动画"按钮时,图片开始移动;当点击"停止动画"按钮时,动画被取消,重新返回起始位置。
 
图9.1  启动动画
 
图9.2  取消动画

9.1.5  setRepeatCount方法:设置重复次数

【功能说明】该方法用于设置一个动画效果重复执行的次数。Android系统默认每个动画仅执行一次,通过该方法可以设置动画执行多次。

【基本语法】public void setRepeatCount (int repeatCount)

其中,参数repeatCount为重复执行的次数。如果设置为n,则动画将执行n+1次。

【实例演示】下面通过代码来演示如何连续执行多次动画效果。

  
  
  1. public class firstActivity extends Activity {  
  2. /** Called when the activity is first created. */  
  3. @Override  
  4. public void onCreate(Bundle savedInstanceState) {               //重载onCreate方法  
  5.     super.onCreate(savedInstanceState);  
  6.     setContentView(R.layout.main);  
  7.  
  8.     final ImageView image=(ImageView)findViewById(R.id.imageView1); //ImageView对象  
  9.     Button btn1=(Button)findViewById(R.id.button1);             //按钮对象  
  10.     Button btn2=(Button)findViewById(R.id.button2);  
  11.     final Animation translateAnimation=new TranslateAnimation(0,200,0,200);                                                                 //移动动画效果  
  12.  
  13.     btn1.setOnClickListener(new View.OnClickListener() {            //设置监听器  
  14.           
  15.         @Override  
  16.         public void onClick(View v) {  
  17.             // TODO Auto-generated method stub  
  18.             translateAnimation.setDuration(3000);               //设置动画持续时间  
  19.             translateAnimation.setRepeatCount(2);               //设置重复次数  
  20.             image.setAnimation(translateAnimation);             //设置动画效果  
  21.             translateAnimation.startNow();                      //启动动画  
  22.         }  
  23.     });  
  24.     btn2.setOnClickListener(new View.OnClickListener() {            //设置监听器  
  25.           
  26.         @Override  
  27.         public void onClick(View v) {  
  28.             // TODO Auto-generated method stub  
  29.             translateAnimation.cancel();                        //取消动画执行  
  30.         }  
  31.     });  
  32. }  
  33. }  

在这段代码中,首先初始化了一个移动的动画效果translateAnimation。然后,在第一个按钮监听器中,通过setDuration方法设置动画持续时间,通过setRepeatCount方法设置重复次数,并为image对象设置动画效果,最后使用startNow方法启动动画效果。在第二个按钮监听器中,调用cancel方法取消动画执行。读者执行这段代码,当点击"执行动画"按钮时,将看到动画被重复执行了两次,也就是总共执行了3次动画。

注意:这里设置的是动画重复执行的次数,而不是动画执行的次数。故动画执行的次数为动画重复执行的次数加1。

9.1.6  setFillEnabled方法:使能填充效果

【功能说明】该方法用于使能填充效果。当该方法设置为true时,将执行setFillBefore和setFillAfter方法,否则将忽略setFillBefore和setFillAfter方法。

【基本语法】public void setFillEnabled (boolean fillEnabled)

其中,参数fillEnabled为是否使能填充效果,true表示使能该效果,false表示禁用该效果。

setFillEnabled方法的示例可以参阅setFillBefore方法和setFillAfter方法中的示例代码。

9.1.7  setFillBefore方法:设置起始填充

【功能说明】该方法用于设置一个动画效果执行完毕后,View对象返回到起始的位置。该方法的效果是系统默认的效果。该方法的执行,需要首先通过setFillEnabled方法使能填充效果,否则设置无效。

【基本语法】public void setFillBefore (boolean fillBefore)

其中,参数fillBefore为是否执行起始填充效果,true表示使能该效果,false表示禁用该效果。

【实例演示】下面通过代码来演示如何让View对象在动画执行完毕后回归到起始位置。

  
  
  1. public class firstActivity extends Activity {  
  2. /** Called when the activity is first created. */  
  3. @Override  
  4. public void onCreate(Bundle savedInstanceState) {               //重载onCreate方法  
  5.     super.onCreate(savedInstanceState);  
  6.     setContentView(R.layout.main);  
  7.  
  8.     final ImageView image=(ImageView)findViewById(R.id.imageView1); //ImageView对象  
  9.     Button btn1=(Button)findViewById(R.id.button1);             //按钮对象  
  10.     Button btn2=(Button)findViewById(R.id.button2);  
  11.     final Animation translateAnimation=new TranslateAnimation(0,200,0,200);                                                                 //移动动画效果  
  12.  
  13.     btn1.setOnClickListener(new View.OnClickListener() {            //设置监听器  
  14.           
  15.         @Override  
  16.         public void onClick(View v) {  
  17.             // TODO Auto-generated method stub  
  18.             translateAnimation.setDuration(3000);               //设置动画持续时间  
  19.             translateAnimation.setFillBefore(true);             //回归起始位置  
  20.             translateAnimation.setFillEnabled(true);            //使能填充效果  
  21.             image.setAnimation(translateAnimation);             //设置动画效果  
  22.             translateAnimation.startNow();                      //启动动画  
  23.         }  
  24.     });  
  25.     btn2.setOnClickListener(new View.OnClickListener() {            //设置监听器  
  26.           
  27.         @Override  
  28.         public void onClick(View v) {  
  29.             // TODO Auto-generated method stub  
  30.             translateAnimation.cancel();                        //取消动画执行  
  31.         }  
  32.     });  
  33. }  
  34. }  
在这段代码中,首先初始化了一个移动的动画效果translateAnimation。然后,在按钮监听器中,通过setDuration方法设置动画持续时间,通过setFillBefore方法使对象回到起始点,并使用setFillEnabled使能填充效果,最后使用startNow方法启动动画效果。读者执行这段代码,当点击"执行动画"按钮时,图片开始移动,当动画结束之后,图片将自动跳回到起始位置,如图9.3所示。

9.1.8  setFillAfter方法:设置终止填充

【功能说明】该方法用于设置一个动画效果执行完毕后,View对象保留在终止的位置。该方法的执行,需要首先通过setFillEnabled方法使能填充效果,否则设置无效。

【基本语法】public void setFillAfter (boolean fillAfter)

其中,参数fillAfter为是否执行终止填充效果,true表示使能该效果,false表示禁用该效果。

【实例演示】下面通过代码来演示如何让View对象在动画执行完毕后保留在终止位置。

  
  
  1. public class firstActivity extends Activity {  
  2. /** Called when the activity is first created. */  
  3. @Override  
  4. public void onCreate(Bundle savedInstanceState) {               //重载onCreate方法  
  5.     super.onCreate(savedInstanceState);  
  6.     setContentView(R.layout.main);  
  7.  
  8.     final ImageView image=(ImageView)findViewById(R.id.imageView1); //ImageView对象  
  9.     Button btn1=(Button)findViewById(R.id.button1);             //按钮对象  
  10.     Button btn2=(Button)findViewById(R.id.button2);  
  11.     final Animation translateAnimation=new TranslateAnimation(0,200,0,200);                                                                 //移动动画效果  
  12.  
  13.     btn1.setOnClickListener(new View.OnClickListener() {            //设置监听器  
  14.           
  15.         @Override  
  16.         public void onClick(View v) {  
  17.             // TODO Auto-generated method stub  
  18.             translateAnimation.setDuration(3000);               //设置动画持续时间  
  19.             translateAnimation.setFillAfter (true);             //保留在终止位置  
  20.             translateAnimation.setFillEnabled(true);            //使能填充效果  
  21.             image.setAnimation(translateAnimation);             //设置动画效果  
  22.             translateAnimation.startNow();                      //启动动画  
  23.         }  
  24.     });  
  25.     btn2.se

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
    这里写图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值