补间动画和属性动画的区别
属性动画实现的效果相似于补间动画,但是不同于补间动画,最大的区别.
:属性动画这使得改变了控件的属性,而补间动画只是幻影
属性动画分为
静态:创建在XML文件
动态:创建在Java代码创建
动画种类
1.旋转动画
2.平移动画
3.缩放动画
4.渐变动画
5.动画集合
在xml定义动画属性,浮点型小数,
属性动画会真正的改变属性
注意:属性动画是android系统3.0后出现,所以必须在API高于11的情况下使用
静态属性动画:在res创建animator文件夹,在里面创建XML文件(注意:文件夹的名字一定是animator)
透明度动画
//透明度动画
ObjectAnimator ofFloat = ObjectAnimator.ofFloat(animation_iv,"alpha",new float[]{0.0f,0.2f,0.4f,0.6f,0.8f,1.0f});
//设置动画的时间
ofFloat.setDuration(3000);
//设置动画的模式
ofFloat.setRepeatMode(ObjectAnimator.RESTART);
//设置动画的执行次数
ofFloat.setRepeatCount(1);
//开启动画
ofFloat.start();
平移动画
//平移动画
ObjectAnimator translationY = ObjectAnimator.ofFloat(animation_iv, "translationY", new float[]{10f, 20f, 30f, 40f, 50f, 60f, 70f, 80f,90f,100f});
//设置动画时间
translationY.setDuration(3000);
//设置动画模式
translationY.setRepeatMode(ObjectAnimator.RESTART);
//设置动画执行次数
translationY.setRepeatCount(1);
//开始执行
translationY.start();
缩放动画
//缩放动画
ObjectAnimator scaleX = ObjectAnimator.ofFloat(animation_iv, "scaleX", new float[]{1f, 2f, 3f, 4f, 5f, 6f, 5f, 4f, 3f, 2f, 1f});
scaleX.setDuration(3000);
scaleX.setRepeatMode(ObjectAnimator.RESTART);
scaleX.setRepeatCount(1);
scaleX.start();
旋转动画
//旋转动画
ObjectAnimator rotationY = ObjectAnimator.ofFloat(animation_iv, "rotationY", new float[]{90f,120f,150f,180f,210f,240f,270f,300f,330f,360f });
rotationY.setDuration(3000);
rotationY.setRepeatMode(ObjectAnimator.RESTART);
rotationY.setRepeatCount(1);
rotationY.start();
动画集合
//创建动画集合
AnimatorSet set = new AnimatorSet();
ObjectAnimator o1 = ObjectAnimator.ofFloat(animation_iv, "rotationY", new float[]{90f,120f,150f,180f,210f,240f,270f,300f,330f,360f });
o1.setDuration(3000);
ObjectAnimator o2 = ObjectAnimator.ofFloat(animation_iv, "scaleX", new float[]{1f, 2f, 3f, 4f, 5f, 6f, 5f, 4f, 3f, 2f, 1f});
o2.setDuration(3000);
ObjectAnimator o3 = ObjectAnimator.ofFloat(animation_iv, "translationY", new float[]{10f, 20f, 30f, 40f, 50f, 60f, 70f, 80f,90f,100f});
o3.setDuration(3000);
ObjectAnimator o4 = ObjectAnimator.ofFloat(animation_iv,"alpha",new float[]{0.0f,0.2f,0.4f,0.6f,0.8f,1.0f});
o4.setDuration(3000);
//存入集合
set.playTogether(o1,o2,o3,o4);
//开始执行
set.start();