Android 动画之补间动画实战(飞机起飞)
android 动画之补间动画实战(飞机起飞),在android项目的日常开发中,很难免的会用到动画。android的动画体系分为传统动画,传统动画中又分为两大类,一类是补间动画(tweened animation)另一类帧动画(frame animation),android3.0 之后又出现现代动画叫属性动画。
这里用个飞机起飞例子在做个demo!
横屏
竖屏
上效果图:飞机起飞
布局代码
<framelayout android:id="@+id/fl_bg" android:layout_height="match_parent" android:layout_width="match_parent"> </framelayout>
anim代码文件
代码
imageview ivbg = findviewbyid(r.id.iv_main_flying_bg); imageview ivplane = findviewbyid(r.id.iv_plane); ivbg.startanimation(animationutils.loadanimation(this, r.anim.translate_bg)); animation animation = animationutils.loadanimation(this, r.anim.plane_fly1); ivplane.startanimation(animation);
补间动画(tweened animation)
补间动画分为四种形式,分别是 alpha(淡入淡出),translate(位移),scale(缩放大小),rotate(旋转)。
补间动画的实现,一般会采用xml 文件的形式;代码会更容易书写和,同时也更容易复用。
补件动画xml属性解析
alpha(淡入淡出)
fromalpha 起始透明度 0为完全透明 1为不透明 0~1之间的浮点值
toalpha 结束透明度
duration 动画运行时间 单位毫秒
fromxscale 动画在x轴以自身几倍伸缩开始
scale(缩放大小)
toxscale 动画在x轴以自身几倍伸缩结束
fromyscale 动画在y轴以自身几倍伸缩开始
toyscale 动画在y轴以自身几倍伸缩结束
pivotx 动画相对于控件自身的x坐标的开始位置
pivoty 动画相对于控件自身的y坐标的开始位置
0% 0% 表示控件左上角 为0,0原点坐标
fillafter 表示在这个动画结束后是否保留这个动画的最后一帧的效果填充后面的动画,true表示停留在最后一帧,false表示不停留在最后一帧
fillbefore view动画结束时是否会停留在动画开始的状态
repeatmode 重复类型,取值为reverse|restart,reverse:表示倒序回放,restart:表示重新放一遍,这个属性必须与repeatcount联合使用,因为它的前提是重复,即重复播放时的播放类型。
repeatcount 动画重复的次数
infinite 无限循环
pivotx、pivoty
在上面我们也提到”pivotx”表示旋转点x轴坐标,也就是我们的view是以哪个点为基准而旋转的,它的值可以是数值、百分数、百分数p 三种样式,比如50、50%、50%p,当为数值时,表示在当前view的左上角,即原点处加上50px,做为旋转点x坐标;如果是50%表示在当前控件的左上角加上自己宽度的50%做为旋转点x坐标;如果是50%p,那么就是表示在当前的左上角加上父控件宽度的50%做为旋转点x坐标。
“pivoty”属性与”pivotx”属性一样。接下来就分别结合实例来详细理解下这三种取值吧。
pivotx %
pivotx的值当取百分数时表示在原点坐标(view的左上角的那个点)的基础之上加上自己的宽度,那么当取50%时,表示在原点坐标的基础上加上的自己宽度的50%也就是图片的正中心。
取值为百分数后面加p
效果和%一样
translate(位移)
fromxdelta x轴起始位置
toxdelta x轴结束位置
fromydelta y轴起始位置
toydelta y轴结束位置
100%p 表示相对于父级
100%相对于自身
rotate(旋转)
interpolator 指定动画的插值器
accelerate_decelerate_interpolator 加速-减速
accelerate_interpolator 加速
decelerate_interpolator 减速
fromdegrees 动画起始角度
todegrees 动画结束旋转的角度 可以大于360度
负数表示逆时针旋转 正数表示顺时针旋转
set标签的使用动画的集合
set让一个view同时执行多个动画,set标签自已是没有属性的,他的属性都是从animation继承而来,但当它们用于set标签时,就会对set标签下的所有子控件都产生作用
以上是补间动画的简述和demo例子的介绍,不足请多多指教。