动画分为:帧动画,补间动画,属性动画
属性动画实现的效果与补间动画非常相似,
最大的区别:属性动画真实的改变了控件的属性,而补间动画只是幻影
属性动画是在Android3.0以后才出现,所以要高于API11的情况下
下面是一些按钮的点击事件:布局就不写了,比较简单
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.tranlate: //平移
ObjectAnimator translationY = ObjectAnimator.ofFloat(image, "translationY", new float[]{10f, 20f, 50f});
//时长
translationY.setDuration(2000);
//执行模式
translationY.setRepeatMode(ObjectAnimator.RESTART);
//重复次数
translationY.setRepeatCount(1);
//开始
translationY.start();
break;
case R.id.rotate: //旋转
ObjectAnimator rotationX = ObjectAnimator.ofFloat(image, "rotationX", 90f, 180f, 360f);
rotationX.setDuration(3000);
rotationX.setRepeatMode(ObjectAnimator.REVERSE);
rotationX.setRepeatCount(2);
rotationX.start();
break;
case R.id.alpha: //渐变 0.0是完全透明
ObjectAnimator alpha = ObjectAnimator.ofFloat(image, "alpha", 0.0f, 1.0f);
alpha.setDuration(2000);
alpha.setRepeatCount(3);
alpha.setRepeatMode(ObjectAnimator.REVERSE);
alpha.start();
break;
case R.id.scale://伸缩
ObjectAnimator scale = ObjectAnimator.ofFloat(image, "scaleX", 1f,4f,5f);
scale .setDuration(2000);
scale .setRepeatCount(3);
scale .setRepeatMode(ObjectAnimator.REVERSE);
scale .start();
break;
case R.id.animatorset://动画集合
AnimatorSet animatorSet = new AnimatorSet();
ObjectAnimator sc = ObjectAnimator.ofFloat(image, "scaleX", 1f,4f,5f);
sc.setDuration(2000);
ObjectAnimator rotation = ObjectAnimator.ofFloat(image, "rotationX", 90f, 180f, 360f);
rotation.setDuration(2000);
animatorSet.playTogether(sc,rotation);
animatorSet.start();
break;
}
}