学习android中,看了这个博主的文章挺好。为了更好的学习作为记录。

引用地址:http://blog.csdn.net/xyz_lmn/article/details/6906783


 Android框架本身就使用了大量的动画效果,比如Activity切换的动画效果,Dialog弹出和关闭时的渐变动画效果以及Toast显示信息时的淡入淡出效果等等。Android系统框架为我们提供了一些动画类及其工具类,所以在Andorid应用中使用动画效果非常简单。Android中可以在xml中定义Animation,也可以在java code中定义。

    Android中动画的实现分两种方式,一种方式是补间动画 Tween Animation,就是说你定义一个开始和结束,中间的部分由android自身实现。另一种叫逐帧动画 Frame Animation,就是说一帧一帧的连起来播放就变成了动画。

一、Tween Animation

xml中实现:

alpha渐变透明度动画效果
scale渐变尺寸伸缩动画效果
translate画面转换位置移动动画效果
rotate画面转移旋转动画效果


JavaCode

AlphaAnimation渐变透明度动画效果
ScaleAnimation渐变尺寸伸缩动画效果
TranslateAnimation画面转换位置移动动画效果
RotateAnimation画面转移旋转动画效果

    使用XML文件定义Tween Animation时XML文件的根节点可以是<alpha>、<scale> <translate>、<rotate>或者是把它们都放入<set>节点中。如下:


xml文件

  1. <?xml version="1.0" encoding="utf-8"?>  

  2. < set xmlns:android="http://schemas.android.com/apk/res/android">  

  3.   <alpha/>  

  4.   <scale/>  

  5.   <translate/>  

  6.   <rotate/>  

  7. < /set>  


Java Code实现如下:

AlphaAnimation:

[java]

  1. AnimationSet animationSet = new AnimationSet(true);//创建一个AnimationSet对象    

  2. AlphaAnimation alphaAnimation = new AlphaAnimation(10);//创建一个AlphaAnimation对象             

  3. alphaAnimation.setDuration(1000);//设置动画执行的时间(单位:毫秒)         

  4. animationSet.addAnimation(alphaAnimation);//将AlphaAnimation对象添加到AnimationSet当中          

  5. view.startAnimation(animationSet);//使用view的startAnimation方法开始执行动画      


RotateAnimation :

[java]

  1. AnimationSet animationSet = new AnimationSet(true);  

  2. /**  

  3. * 前两个参数定义旋转的起始和结束的度数,后两个参数定义圆心的位置  

  4. */  

  5. RotateAnimation rotateAnimation = new RotateAnimation(0360,      

  6.                     Animation.RELATIVE_TO_PARENT, 1f,      

  7.                     Animation.RELATIVE_TO_PARENT, 0f);      

  8.             rotateAnimation.setDuration(5000);      

  9.             animationSet.addAnimation(rotateAnimation);      

  10.             p_w_picpathView.startAnimation(animationSet);   


TranslateAnimation:

[java]

    AnimationSet animationSet = new AnimationSet(true);      

  1. /**  

  2.              * x和y轴的起始和结束位置  

  3. */  

  4. TranslateAnimation translateAnimation = new TranslateAnimation      

  5.             (      

  6.                     Animation.RELATIVE_TO_SELF, 0f,       

  7.                     Animation.RELATIVE_TO_SELF,0.5f,       

  8.                     Animation.RELATIVE_TO_SELF, 0f,      

  9.                     Animation.RELATIVE_TO_SELF, 1.0f      

  10.             );      

  11.             translateAnimation.setDuration(1000);      

  12.             animationSet.addAnimation(translateAnimation);      

  13. view.startAnimation(animationSet);    


ScaleAnimation:

[java] 

  1. AnimationSet animationSet = new AnimationSet(true);      

  2. /**  

  3.              * 围绕一个点伸缩  

  4. */  

  5. ScaleAnimation scaleAnimation = new ScaleAnimation(10.1f, 1,      

  6.                     0.1f, Animation.RELATIVE_TO_SELF, 0.5f,      

  7.                     Animation.RELATIVE_TO_SELF, 0.5f);      

  8.             animationSet.addAnimation(scaleAnimation);      

  9.             animationSet.setStartOffset(1000);      

  10.             animationSet.setFillAfter(true);      

  11.             animationSet.setFillBefore(false);      

  12.             animationSet.setDuration(2000);      

  13. view.startAnimation(animationSet);