Animation类:动画抽象类java
Android系统提供了两种实现动画的方式,一种是补间动画(Tween Animation),另外一种是帧动画(Frame Animation)。补间动画能够实现View组件的移动、放大、缩小以及渐变等效果,帧动画则提供了一种逐帧播放图片的动画方式。
ide
Animation类是Android系统的一个动画抽象类,全部其余一些动画类都要继承该类中的实现方法。Animation类主要用于补间动画效果,提供了动画启动、中止、重复、持续时间等方法。Animation类中的方法适用于任何一种补间动画对象。动画
setDuration方法:设置持续时间spa
【功能说明】该方法用于设置动画的持续时间,以毫秒为单位。该方法是设置补间动画时间长度的主要方法,使用很是广泛。code
【基本语法】public void setDuration (long durationMillis)orm
其中,参数durationMillis为动画的持续时间,单位为毫秒(ms)。对象
startNow方法:马上启动动画继承
【功能说明】该方法用于启动执行一个动画。该方法是启动执行动画的主要方法,使用时须要先经过setAnimation方法为某一个View对象设置动画。另外,用户在程序中也可使用View组件的startAnimation方法来启动执行动画。图片
【基本语法】public void startNow ()get
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); //按钮对象 final Animation translateAnimation=new TranslateAnimation(0,200,0,200); //移动动画效果 btn1.setOnClickListener(new View.OnClickListener() { //设置监听器 @Override public void onClick(View v) { // TODO Auto-generated method stub translateAnimation.setDuration(3000); //设置动画持续时间 image.setAnimation(translateAnimation); //设置动画效果 translateAnimation.startNow(); //启动动画 } }); } }
4. start方法:启动动画
【功能说明】该方法用于启动执行一个动画。该方法是启动执行动画的另外一个主要方法,使用时须要先经过 setAnimation方法为某一个View 对象设置动画。start方法区别于startNow方法的地方在于,start方法能够用于在getTransformation方法被调用时启动动 画。
【基本语法】public void start ()
start方法的执行效果相似于startNow方法,这里再也不赘述
5. cancel方法:取消动画
【功能说明】该方法用于取消一个动画的执行。该方法是取得一个正在执行中的动画的主要方法。cancel方法和startNow方法结合能够实现对 动画执行过程的控制。须要注意的是,经过cancel方法取消的动画,必须使用reset方法或者setAnimation方法从新设置,才能够再次执行 动画。
【基本语法】public void cancel ()
【实例演示】下面经过代码来演示如何取消动画效果执行。
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,200,0,200);//移动动画效果 btn1.setOnClickListener(new View.OnClickListener() { //设置监听器 @Override public void onClick(View v) { // TODO Auto-generated method stub translateAnimation.setDuration(3000); //设置动画持续时间 image.setAnimation(translateAnimation); //设置动画效果 translateAnimation.startNow(); //启动动画 } }); btn2.setOnClickListener(new View.OnClickListener() { //设置监听器 @Override public void onClick(View v) { // TODO Auto-generated method stub translateAnimation.cancel(); //取消动画执行 } }); } }
6. setRepeatCount方法:设置重复次数
【功能说明】该方法用于设置一个动画效果重复执行的次数。Android系统默认每一个动画仅执行一次,经过该方法能够 设置动画执行屡次。
【基本语法】public void setRepeatCount (int repeatCount)
其中,参数repeatCount为重复执行的次数。若是设置为n,则动画将执行n+1次。
【实例演示】下面经过代码来演示如何连续执行屡次动画效果。
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,200,0,200); //移动动画效果 btn1.setOnClickListener(new View.OnClickListener() { //设置监听器 @Override public void onClick(View v) { // TODO Auto-generated method stub translateAnimation.setDuration(3000); //设置动画持续时间 translateAnimation.setRepeatCount(2); //设置重复次数 image.setAnimation(translateAnimation); //设置动画效果 translateAnimation.startNow(); //启动动画 } }); btn2.setOnClickListener(new View.OnClickListener() { //设置监听器 @Override public void onClick(View v) { // TODO Auto-generated method stub translateAnimation.cancel(); //取消动画执行 } }); } }
7. setFillEnabled方法:使能填充效果
【功能说明】该方法用于使能填充效果。当该方法设置为true时,将执行setFillBefore和setFillAfter方法,不然将忽略setFillBefore和setFillAfter方法。
【基本语法】public void setFillEnabled (boolean fillEnabled)
其中,参数fillEnabled为是否使能填充效果,true表示使能该效果,false表示禁用该效果。
setFillEnabled方法的示例能够参阅setFillBefore方法和setFillAfter方法中的示例代码
8. setFillBefore方法:设置起始填充
【功能说明】该方法用于设置一个动画效果执行完毕后,View对象返回到起始的位置。该方法的效果是系统默认的效果。该方法的执行,须要首先经过setFillEnabled方法使能填充效果,不然设置无效。
【基本语法】public void setFillBefore (boolean fillBefore)
其中,参数fillBefore为是否执行起始填充效果,true表示使能该效果,false表示禁用该效果。
【实例演示】下面经过代码来演示如何让View对象在动画执行完毕后回归到起始位置。
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,200,0,200); //移动动画效果 btn1.setOnClickListener(new View.OnClickListener() { //设置监听器 @Override public void onClick(View v) { // TODO Auto-generated method stub translateAnimation.setDuration(3000); //设置动画持续时间 translateAnimation.setFillBefore(true); //回归起始位置 translateAnimation.setFillEnabled(true); //使能填充效果 image.setAnimation(translateAnimation); //设置动画效果 translateAnimation.startNow(); //启动动画 } }); btn2.setOnClickListener(new View.OnClickListener() { //设置监听器 @Override public void onClick(View v) { // TODO Auto-generated method stub translateAnimation.cancel(); //取消动画执行 } }); } }
在这段代码中,首先初始化了一个移动的动画效果translateAnimation。而后,在按钮 监听器中,经过 setDuration方法设置动画持续时间,经过setFillBefore方法使对象回到起始点,并使用setFillEnabled 使能填充效果,最后使用startNow方法启动动画效果。读者执行这段代码,当点击"执行动画"按钮时,图片开始移动,当动画结束以后,图片将自动跳回 到起始位置
9. setFillAfter方法:设置终止填充
【功能说明】该方法用于设置一个动画效果执行完毕后,View对象保留在终止的位置。该方法的执行,须要首先经过setFillEnabled方法使能填充效果,不然设置无效。
【基本语法】public void setFillAfter (boolean fillAfter)
其中,参数fillAfter为是否执行终止填充效果,true表示使能该效果,false表示禁用该效果。
【实例演示】下面经过代码来演示如何让View对象在动画执行完毕后保留在终止位置。
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,200,0,200); //移动动画效果 btn1.setOnClickListener(new View.OnClickListener() { //设置监听器 @Override public void onClick(View v) { // TODO Auto-generated method stub translateAnimation.setDuration(3000); //设置动画持续时间 translateAnimation.setFillAfter (true); //保留在终止位置 translateAnimation.setFillEnabled(true); //使能填充效果 image.setAnimation(translateAnimation); //设置动画效果 translateAnimation.startNow(); //启动动画 } }); btn2.setOnClickListener(new View.OnClickListener() { //设置监听器 @Override public void onClick(View v) { // TODO Auto-generated method stub translateAnimation.cancel(); //取消动画执行 } }); } }
在这段代码中,首先初始化了一个移动的动画效果translateAnimation。而后,在按钮监听器中,经过setDuration方法设置动画持 续时间,经过setFillAfter方法使对象保留在终止点,并使用setFillEnabled使能填充效果,最后使用startNow方法启动动画 效果。读者执行这段代码,当点击"执行动画"按钮时,图片开始移动,当动画结束以后,图片将停留在终止位置
10. setRepeatMode方法:设置重复模式
【功能说明】该方法用于设置一个动画效果执行的重复模式。Android系统中提供了几种重复模式,其中最主要的即是RESTART模式和REVERSE模式。
【基本语法】public void setRepeatMode (int repeatMode)
其中,参数repeatMode为动画效果的重复模式,经常使用的取值以下。
RESTART:从新从头开始执行。
REVERSE:反方向执行。
【实例演示】下面经过代码来演示如何更改动画路径的方向。
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,200,0,200); //移动动画效果 btn1.setOnClickListener(new View.OnClickListener() { //设置监听器 @Override public void onClick(View v) { // TODO Auto-generated method stub translateAnimation.setDuration(3000); //设置动画持续时间 translateAnimation.setRepeatCount(2); //设置重复次数 translateAnimation.setRepeatMode(Animation.RESTART); //从新从头执行 //translateAnimation.setRepeatMode(Animation.REVERSE); //反方向执行 image.setAnimation(translateAnimation); //设置动画效果 translateAnimation.startNow(); //启动动画 } }); btn2.setOnClickListener(new View.OnClickListener() { //设置监听器 @Override public void onClick(View v) { // TODO Auto-generated method stub translateAnimation.cancel(); //取消动画执行 } }); } }
在这段代码中,首先初始化了一个移动的动画效果translateAnimation。而后,在按钮监听器中,经过setDuration方法设置 动画持续时间,经过setRepeatCount方法设置重复次数,经过setRepeatMode设置重复模式,最后使用startNow方法启动动画 效果。
若是设置的重复模式为Animation.RESTART,则表示从新从头开始执行。读者执行这段代码,当点击"执行动画"按钮时,图片开始移动,当一次动画执行结束以后,图片将从新从头开始执行。
若是设置的重复模式为Animation.REVERSE,则表示反方向执行。读者执行这段代码,当点击"执行动画"按钮时,图片开始移动,当一次动画执行结束以后,图片将向反方向运动.
11. setStartOffset方法:设置启动时间
【功能说明】该方法用于设置一个动画执行的启动时间,单位为毫秒。系统默认当执行start方法后马上执行动画,当使用该方法设置后,将延迟必定的时间再启动动画。
【基本语法】public void setStartOffset (long startOffset)
其中,参数startOffset为动画的启动时间,单位为毫秒(ms)。
【实例演示】下面经过代码来演示如何更改动画的启动时间。
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,200,0,200); //移动动画效果 btn1.setOnClickListener(new View.OnClickListener() { //设置监听器 @Override public void onClick(View v) { // TODO Auto-generated method stub translateAnimation.setDuration(3000); //设置动画持续时间 translateAnimation.setStartOffset(3000); //设置启动时间 image.setAnimation(translateAnimation); //设置动画效果 translateAnimation.startNow(); //启动动画 } }); btn2.setOnClickListener(new View.OnClickListener() { //设置监听器 @Override public void onClick(View v) { // TODO Auto-generated method stub translateAnimation.cancel(); //取消动画执行 } }); } }
在这段代码中,首先初始化了一个移动的动画效果translateAnimation。而后,在按钮监听器中,经过setDuration方法设置动画的 持续时间,经过setStartOffset方法设置动画的启动时间,最后使用startNow方法启动动画效果。读者执行这段代码,当点击"执行动画" 按钮时,将等待3秒以后,图片才开始移动。