Tween(补间)动画 之 安卓

来源:互联网 发布:数据共享该怎样连接 编辑:程序博客网 时间:2024/06/04 20:55

一、什么是补间:

     
      回答:故名思意,补间就是补起来一个变化之间缺少的部分
      例如:开始是一个圆,最后变成了是一个长方形,现在你要动画从这个圆,演变成一个长方形,你就用补间,把他们中间变化过程补出来,就会由“圆变成长方形”这个动画。 或者假如一个圆移动位置到另外一个地方之间的动画也能叫补间动画。(书上用语:补间动画所定义的开始帧、结束帧)其实就是一个简单的变化。


二、安卓中的补间动画(Tween动画)分类:

         android使用Animation代表抽象的动画类,它包括如下几个子类.

         1、AlphaAnimation(透明度改变的动画)。
         2、ScaleAnimation(大小缩放的动画)。
         3、TranslateAnimation(位移变化的动画)。
         4、RotateAnimation(旋转动画)。
   

三、在代码中设置动画:

   1、AlphaAnimation透明度改变动画:在创建动画是要指定动画开始时的透明度、结束时候透明度、和动画持续时间

  AlphaAnimation  alphaAnimation = new AlphaAnimation(fromAlpha, toAlpha);
  alphaAnimation.setDuration(durationMillis);
   
    说明:fromAlpha:表示开始透明度 。
               toAlpha: 结束透明度。
               durationMillis: 动画持续时间

  2、ScaleAnimation大小缩放的动画:创建该动画是要指定动画开始时的缩放比(以X、Y轴的缩放参数来表示)、结束时动画的缩放比(以X、Y轴的缩放参数来表示)   、并指定动画持续时间。由于缩放时是以不同点为中心时缩放想过并不相同,因此指定缩放动画时还要通过 pivotX、pivotY来指定“缩放中兴”的坐标。  

ScaleAnimation scaleAnimation = new  ScaleAnimation(fromX, toX, fromY, toY, pivotXType, pivotXValue, pivotYType, pivotYValue);
scaleAnimation.setDuration(durationMillis);
       
    说明:float fromX 动画起始时 X坐标上的伸缩尺寸 
               float toX 动画结束时 X坐标上的伸缩尺寸 
               float fromY 动画起始时Y坐标上的伸缩尺寸 
               float toY 动画结束时Y坐标上的伸缩尺寸 
               int pivotXType 动画在X轴相对于物件位置类型 
               float pivotXValue 动画相对于物件的X坐标的开始位置 
               int pivotYType 动画在Y轴相对于物件位置类型 
               float pivotYValue 动画相对于物件的Y坐标的开始位置 
              durationMillis: 动画持续时间
      
       长用的方法如下:
                scaleAnimation.setRepeatCount(int repeatCount);//设置重复次数 
                scaleAnimation.setFillAfter(boolean);//动画执行完后是否停留在执行完的状态 
                scaleAnimation.setStartOffset(long startOffset);//执行前的等待时间 
                scaleAnimation.startNow(); //开始动画                
                scaleAnimation.cancel(); //结束动画

  3、TranslateAnimation:位移变化的动画:创建该动画时只要指定动画开始时的位置(以X、Y坐标来表示)、结束时的动画(以X、Y坐标来表示),并指定动画持续时间即可。例子(比如QQ,平移滑动菜单)
        
  TranslateAnimation translateAnimation = new TranslateAnimation(fromXDelta, toXDelta, fromYDelta, toYDelta);
  translateAnimation.setDuration(durationMillis);// 设置动画持续时间  translateAnimation.setRepeatCount(repeatCount);// 设置重复次数  translateAnimation.setRepeatMode(Animation.RESTART);//设置反方向执行

   说明:    float fromXDelta 动画开始的点离当前View X坐标上的差值 
                 float toXDelta 动画结束的点离当前View X坐标上的差值 
                 float fromYDelta 动画开始的点离当前View Y坐标上的差值 
                 float toYDelta 动画开始的点离当前View Y坐标上的差值 

  4、RotateAnimation :旋转动画,创建该动画时只要指定动画开始时的旋转角度、结束时的旋转角度、并指定动画持续时间就OK、由于旋转时以不同点为中心时旋转效果并不相同,因此指定旋转动画时还要通过pivotX pivotY来指定“旋转轴心”的坐标。
    
RotateAnimation rotateAnimation = new RotateAnimation(fromDegrees, toDegrees, pivotXType, pivotXValue, pivotYType, pivotYValue) ;

说明: 
                float fromDegrees:旋转的开始角度。 
                float toDegrees:    旋转的结束角度。 
                int pivotXType:      X轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。 
                float pivotXValue:  X坐标的伸缩值。 
                int pivotYType:     Y轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。 
                float pivotYValue:  Y坐标的伸缩值。 

           常用方法:    
                rotateAnimation.setRepeatCount(int repeatCount);//设置重复次数 
                rotateAnimation.setFillAfter(boolean);//动画执行完后是否停留在执行完的状态 
                rotateAnimation.setStartOffset(long startOffset);//执行前的等待时间 
                scaleAnimation.startNow(); //开始动画                
                rotateAnimation.cancel(); //结束动画

0 0