背景
动画种类太多… 到底该用什么动画,之前一直没明白 补间动画、帧动画与视图动画关系。
直到 Carson_Ho 这篇介绍后,明白了许多
View Animation
主要处理View的动画,平移、旋转、缩放、颜色、背景透明度(不透明度)
Tween Animation/补间动画
<!--视图动画: res/anim/xxx.xml-->
repeatCount, interpolator(插值器, 可以自定义插值器)
fromXDelta --> toXDelta; fromXScale --> toXScale; fromAlpha --> toAlpha
Drawable Animation/帧动画
将动画资源(即每张图片资源)放到 drawable文件夹里
XML 方式
res/anim/test.xml
<!--步骤1:创建anim文件-->
<animation-list
xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="true" // 设置是否只播放一次,默认为false
>
<item android:drawable="@drawable/a0" android:duration="100"/>
<item android:drawable="@drawable/a1" android:duration="100"/>
<item android:drawable="@drawable/a2" android:duration="100"/>
<item android:drawable="@drawable/a3" android:duration="100"/>
<item android:drawable="@drawable/a4" android:duration="100"/>
</animation-list>
// 步骤2:java
iv.setImageResource(R.drawable.knight_attack);
// 1. 设置动画
animationDrawable = (AnimationDrawable) iv.getDrawable();
// 2. 获取动画对象
animationDrawable.start();
// 3. 启动动画
Java 方式 newAnimationDrawable()
<!-- 帧动画:res/drawable/xxx.xml -->
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot=["true" | "false"] >
<item
android:drawable="@[package:]drawable/drawable_resource_name"
android:duration="integer" />
</animation-list>
Property Animation Android3.0 (API-11) +
<!--属性动画: res/animator/xxx.xml -->
ValueHolder,ObjectAnimator
translationX,translationY:控制View的位置,值是相对于View容器左上角坐标的偏移。
rotationX,rotationY:控制相对于轴心旋转。
x,y:控制View在容器中的位置,即左上角坐标加上translationX和translationY的值。
alpha:控制View对象的alpha透明度值。
总结
视图动画:无改变动画的属性 因为视图动画在动画过程中仅对图像进行变换,从而达到了动画效果
变换操作包括:平移、缩放、旋转和透明
属性动画:改变了动画属性 因属性动画在动画过程中对动态改变了对象属性,从而达到了动画效果
特别注意 使用视图动画时:无论动画结果在哪,该View的位置不变 & 响应区域都是在原地,不会根据结果而移动; 而属性动画 则会通过改变属性 从而使动画移动
动画参考 CSDN-Carson_Ho