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的默认补间动画虽然只有四种,但开发者可以通过巧妙的动画组合创造更加丰富多彩的动画