- 属性动画
通过不断改变View的属性值,让View动起来
TextView tv = null;
ValueAnimator animator = ValueAnimator.ofFloat(1f, 2f, 3f, 4f, 5f);
animator.addUpdateListener(valueAnimator -> {
tv.setTextSize((Float) valueAnimator.getAnimatedValue());
});
animator.start();
- 视图动画(补间动画)
不会改变View的属性,只改变了显示效果
平移、透明、旋转、缩放
ImageView localLoadingView = null;
RotateAnimation rotate = new RotateAnimation(0f, 360f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
rotate.setDuration(500);//设置动画持续周期
rotate.setRepeatCount(-1);//设置重复次数
rotate.setFillAfter(true);//动画执行完后是否停留在执行完的状态
rotate.setStartOffset(10);//执行前的等待时间
localLoadingView.setAnimation(rotate);
- 帧动画 多张图片以指定时间间隔交替展示
AnimationDrawable animationDrawable = new AnimationDrawable();
animationDrawable.addFrame(drawable1, 100);
animationDrawable.addFrame(drawable2, 100);
animationDrawable.addFrame(drawable3, 100);
animationDrawable.setOneShot(true);
ImageView imageView = null;
imageView.setImageDrawable(animationDrawable);
animationDrawable.start();