补间动画和属性动画
补间动画
//透明动画
alpha
android:duration=“4000” 时间4秒
fromAlpha=“1.0” 从不透明
interpolator="@android:anim/accelerate_decelerate_interpolator" 差值器
toAlpha=“0.0” 到透明
repeatCount=“2” 重复次数
fillAfter=“true” 保持动画结束状态
//转圈
rotate
android:duration=“时间”
android:fromDegrees=“0” 开始角度
android:toDegrees=“360” 结束角度
android:pivotX=“50%”
android:pivotY=“50%”
android:repeatCount = “-1”
android:repeatMode = “restart”
//缩放
scale
android:duration = “2000”
android:fromXScale=“0.0”
android:fromYScale=“0.0”
android:pivotX=“50%”
android:pivotY=“50%”
android:toXScale=“2.0”
android:toYScale=“2.0”
//位移
translate
android:duration=“时间”
android:fromXdelta=“开始移动距离图左”
android:toXDelta=“结束移动距离图左”
android:fromYDelta=“开始移动距离图上”
android:toYDelta=“结束移动距离图上”
属性动画:
> alpha 透明
> rotation, rotationX, rotationY 旋转
> scaleX, scaleY 缩放
> translationX, translationY 位移, 平移
- 通过ObjectAnimator.ofFloat()创建
//单个动画
ObjectAnimator scaleX = ObjectAnimator.ofFloat(tv_image, “scaleX”, 0,1,0, 1);
//参1: 控件
//参2: 指定动画要操作这个控件的哪个属性(见上面)
//后面参数为参2属性的值
objectAnimator.setDuration(6000); //时间
objectAnimator.setRepeatCount(1); //重复次数
objectAnimator.setInterpolator(new BounceInterpolator()); //插值器
objectAnimator.start();
//多个动画
ObjectAnimator scaleX = ObjectAnimator.ofFloat(tv_image, “scaleX”, 0,1,0, 1);
ObjectAnimator scaleY = ObjectAnimator.ofFloat(tv_image, “scaleY”, 0, 1,0,1);
AnimatorSet animatorSet = new AnimatorSet(); //动画设置
animatorSet.playSequentially(scaleX, scaleY); //依次执行
// animatorSet.play(scaleX).with(scaleY); //设置执行顺序 .play第一个, .with一起执行, after: 之后执行, before: 之前执行
animatorSet.setDuration(6000);
animatorSet.start();
插值器
java类
xml id值
描述
AccelerateDecelerateInterpolator
@android:anim/accelerate_decelerate_interpolator
动画始末速率较慢,中间加速
AccelerateInterpolator
@android:anim/accelerate_interpolator
动画开始速率较慢,之后慢慢加速
AnticipateInterpolator
@android:anim/anticipate_interpolator
开始的时候从后向前甩
AnticipateOvershootInterpolator
@android:anim/anticipate_overshoot_interpolator
类似上面AnticipateInterpolator
BounceInterpolator
@android:anim/bounce_interpolator
动画结束时弹起
CycleInterpolator
@android:anim/cycle_interpolator
循环播放速率改变为正弦曲线
DecelerateInterpolator
@android:anim/decelerate_interpolator
动画开始快然后慢
LinearInterpolator
@android:anim/linear_interpolator
动画匀速改变
OvershootInterpolator
@android:anim/overshoot_interpolator
向前弹出一定值之后回到原来位置
PathInterpolator
新增,定义路径坐标后按照路径坐标来跑。
Animation类的方法
解释
reset()
重置Animation的初始化
cancel()
取消Animation动画
start()
开始Animation动画
setAnimationListener(AnimationListener listener)
给当前Animation设置动画监听
hasStarted()
判断当前Animation是否开始
hasEnded()
判断当前Animation是否结束
既然补间动画只能给View使用,那就来看看View中和动画相关的几个常用方法吧,如下:
View类的常用动画操作方法
解释
startAnimation(Animation animation)
对当前View开始设置的Animation动画
clearAnimation()
取消当View在执行的Animation动画