动画
帧动画
特点: 一帧一帧的图片连续播放就是一个帧动画
主要用于重复显示某些画面
用法:
1. animation_list
2. 必须寄生在一个控件上
3. view.setbackgroundResource;设置帧动画列表
4. 需要让动画动起来 (AnimationDrawbler)view.getBackground()
5. 动画.start();
关键方法,start
补间动画
位移,缩放,渐变,旋转,只是看起来,动起来,但是它还在那里
缩放
从多大,变成多大
主要属性 fromXScale toXScale fromYScale toYScale duration(毫秒) pivotx 指定中心点 百分比 repeatMode reverse执行完成,又回来 repeatCount次数
重要方法:
保持动画setFillAftter(true);
代码:
1. 拿到缩放动画 AnimationUtils.loadAnimation(this,R.anim.xx);
2. 将动画设置给指定的控件 view.setAnimation(scale);
3. 启动动画 start();
4. 通过控件,启动动画
位移动画(translate)
整体移动,不需要重心,从什么地方到什么地方
主要属性
duration
repeatMode
repeatCount
fromXDelta toDelta
fromYDelta toDelta
---------------------
fromXDelta的百分比是以控件的宽度为基准
启动
Animation trans = AnimationUtils.loadAnimation(this,R.anim.trans);
view.startAnimation(trans);
旋转动画
主要属性
duration
repeatMode
repeatCount
pivotX privotY
270
|
|
180----------0
|
|
90
默认0 到90
渐变动画
不需要中心点,是整体
主要属性
duration
repeatMode
repeatCount
fromAlpha
toAlpha
所有和动画监听 a.setAnimationListeneer
那么如何区分多个动画监听,除了匿名外,我不知道
以上动画只能针对控件,不能针对属性
多个动画
<set>
<rotate fromDegree="0" toDegress="300" pivox = "50%" .../>
<translate fromDegree="0" toDegress="300" pivox = "50%" .../>
使用代码做动画
Animation.relative_to_self: 以自己为参照物
Animation.relative_to_parent: 以父容器为参照物,会移动位置的,注意会有偏移量的问题,记住
view.clearAnimation清除动画