【Android当中的常用动画】
1.Frame 帧动画
将每一张静止的图片依次的显示出来,利用人眼暂时停留的错觉,得出的动画。
在drawable文件中中创建xml文件
标签是<animation-list />
使用步骤:
1.在drawable文件夹下创建帧动画的资源文件,<animation-list />
2.在代码或者在布局当中设置imageview的背景或者src资源为自定义的帧动画资源文件。
3.获取AnimationDrawable的帧动画管理器,然后可以调用其start或者是stop方法开启关闭动画。
添加oneshot属性
true:表示指定的资源图片只切换一次
false:表示指定的item图片无限切换。
2.Tween 补间动画
补充中间的动画
开发者只需要指定动画开始和结束的关键帧,而进行中的中间帧是由系统来计算并且补齐的。
补间动画分为四种:
1.透明度动画 : alpha
2.大小缩放动画 : scale
3.位移变化动画 : translate
4.旋转动画 : rotate
5.综合动画 :把前几种动画综合起来。set
补间动画的资源存放与res/anim目录之下
四种变化方式都有对应的标签
<alpha .../>
定义的属性:
android:fromAlpha="1"
android:toAlpha="0.05"
以上两个属性 取值范围 0-1 之间
0:表示完全透明
1:表示不透明
<scale .../>
定义的属性:
确定开始和结束的尺寸
android:fromXScale="1"
android:toXScale="0.1"
android:fromYScale="1"
android:toYScale="0.1"
确定放大缩小的中心点
android:pivotX="50%"
android:pivotY="50%"
<translate .../>
定义的属性:
确定开始和结束的位置
android:fromXDelta="0"
android:toXDelta="200"
android:fromYDelta="0"
android:toYDelta="200"
确定运动持续的时间
android:duration="5000"
插值器 :可以改变动画执行中间的效率,控制动画的速度
android:interpolator
accelerate_interpolator 加速
decelerate_interpolator 减速
accelerate_decelerate_interpolator 先加速后减速
linear_interpolator 匀速
表示重复的次数
android:repeatCount
表示重复的模式
android:repeatMode
是否保留动画结束时的状态
android:fillAfter
<rotate .../>
定义的属性:
旋转的起始角度和最终角度
android:fromDegrees="0"
android:toDegrees="360"
旋转的中心点
android:pivotX=""
android:pivotY=""
放入三种值:
1.绝对的数值:传入绝对值,表示执行该view的某一个点作为中心点 (50,50)
2.百分比 :表示以该view的宽高的百分比作为中心点 (50% ,50%)
3.百分比p :表示执行该动画的view的外层布局的位置 (50%p 50%p)
<set .../>
可以对以上四种动画任意组合。
//代码中加载资源动画:
Animation anim = AnimationUtils.loadAnimation(this,R.anim.anim_xxx);
//开启动画
xxx.startAnimation(anim);
3.Property 属性动画 android3.0之后引入的动画
属性动画的特点:
1.Animator框架之下的,常用的类包括AnimatorSet和ObjectAnimator
2.补间动画只能够定义控件的四个方面,而属性动画可以定义任何属性。
3.补间动画只能够让ui控件执行动画,而属性动画可以让任何对象执行动画。
属性动画可以定义以下属性:
1.动画持续时间
2.动画的插值方式
3.动画重复的次数
4.动画重复的行为
5.动画的集合
......
属性动画在xml文件当中定义的步骤。
1.在res/animator文件夹当中定义属性动画的资源文件,如果是单独的属性可以定义标签为<objectAnimator.../>
如果是多个属性就要放入到<set.../>标签当中。
在<objectAnimator.../>标签中可以定义的属性:
android:propertyName="textColor" //属性名
android:duration="5000" //动画持续时间
android:valueType="intType" //动画的输入类型
android:valueFrom="#ff0000" //动画的起始值
android:valueTo="#0000ff" //动画的最终值
在set标签当中可以判断是同时执行,还是顺序执行
android:ordering=""
sequentially :按顺序执行
together : 同时执行
2. 在activity当中把xml文件转化为属性动画,然后开启动画
//获得属性动画的对象
ObjectAnimator backgroundAnimator = (ObjectAnimator) AnimatorInflater.loadAnimator(this,R.animator.anim_bgcolor);
//给指定的ui控件设置动画
backgroundAnimator.setTarget(mTv);
//开启动画
backgroundAnimator.start();