Android动画浅析之补间动画

Android动画总体分为两种类型,补间动画(Tween Animation)、逐帧动画(Frame by frame Animation)。

这个概念,对于学习过flash动画的人而言并不陌生。补间动画(Tween Animation),即时由开发者设定好画面的起点帧和终点帧,并设定好动画的时长,由计算机通过计算,将画面自动从起点过度到终点,从而形成动画。逐帧动画(Frame by frame Animation)则像很多动漫的制作方法一样,将画面一帧一帧的设定好,然后由计算机按照顺序播放,形成动画。

现在,先介绍补间动画。

Android补间动画分为四种:

1.RotateAnimation(旋转动画)

   旋转动画可以将指定控件从指定角度旋转到另一指定角度。动画构造范例如下:
   
  RotateAnimation rotateAnimation=new RotateAnimation(
                0,360, Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f
        );
   上述代码构造了一个旋转动画,上述方法中前两个参数定义了从0度旋转到360度,即顺时针旋转一周。若设定0度到-360度,则逆时针旋转一周。若设定0度到720度,则顺时针旋转2周。
    上述方法中的后四个参数用来设定按照哪个位置进行旋转。其中,前两个参数用来定义x轴位置,Animation.RELATIVE_TO_SELF表示以控件自身为参照,0.5f表示控件的x轴中间位置。如果是0f或1f则分别表示x轴最左边和最右边。后两个参数用来定义y轴的位置,同理,0.5f表示控件的y轴中间位置。如果是0f或1f分别表示y轴最下边和最上边。
    RELATIVE_TO_SELF也可以用以下参数替换,ABSOLUTE,表示具体的坐标值,指绝对的屏幕像素单位。RELATIVE_TO_PARENT,表示相对父容器的坐标值,0.1f是指父容器的坐标值乘以0.1

2.ScaleAnimation(缩放动画)

      缩放动画可以将指定控件放大或缩小。动画构造范例如下:
    
  ScaleAnimation scaleAnimation=new ScaleAnimation(
                0,1f,0,1f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f
        );
    上述方法中,第一对参数分别表示起始和结束时,x轴上的伸缩尺寸,第二对参数分别表示起始和结束时,y轴上的伸缩尺寸。
    后四个参数和旋转动画相同。

3.AlphaAnimation(透明动画)

   透明动画可以完成动画透明度的变化。动画构造范例如下:
    
  AlphaAnimation alphaAnimation=new AlphaAnimation(1,0);
    透明动画的构造非常简单,只要设定两个值,即初始透明度和结束时透明度。1表示完全透明,0表示完全不透明。

4.TransitionAnimation(位移动画)

    位置动画可以将控件从起始位置移动到指定位置。动画构造范例如下:
   
   TranslateAnimation translateAnimation=new TranslateAnimation(
          Animation.RELATIVE_TO_SELF,0,
          Animation.RELATIVE_TO_SELF,0.5f,
          Animation.RELATIVE_TO_SELF,0,
          Animation.RELATIVE_TO_SELF,0
        );
     位移动画的构造也很简单,分别设定x,y轴的起始坐标和结束坐标即可

Android四中补间动画除自身构造方法之外,包含以下公用方法
1.setDuration(long durationMills)        设置动画时间的持续durationMills毫秒
2.setStartOffSet(long startOffSet)        设置动画在执行之前的等待时间
3.setRepeatCount(int repeatCount)  设置动画的重复次数
4.setRepeatMode(int repeatMode);设置动画的重复模式,分为Animation.REVERSE(执行完之后反向执行)和Animation.RESTART(执行完之后回到起点重复执行)

Android补间动画,在基于四中动画的基础上还有一种将动画进行组合的方式,AnimationSet,相当于一个容器,将动画添加到容器中。
AnimationSet animationSet=new AnimationSet(true);
animationSet.addAnimation(scaleAnimation);
animationSet.addAnimation(rotateAnimation());
上述代码,将两个定义好的动画添加到容器之中,使用View.startAnimation(animationSet)即可调用容器中的动画。
容器不仅能添加动画,也可以将另一个装有动画的容器添加进去,实现多种动画的组合。

Android的默认补间动画虽然只有四种,但开发者可以通过巧妙的动画组合创造更加丰富多彩的动画


   

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值