**
一、属性动画
**
1)、
//推荐这种 四种动画都有
// 缩放 值的范围0-1-n,float类型,0-1代表缩小,1-n代表放大
ObjectAnimator scaleX = ObjectAnimator.ofFloat(img, "scaleX", 1, 2);
//平移 值的范围-n - 0 - n int类型
ObjectAnimator translationX = ObjectAnimator.ofFloat(img, "translationX", 100, 300);
//透明度 0f - 1 f float类型
ObjectAnimator alpha = ObjectAnimator.ofFloat(img, "alpha", 1, (float) 0.5);
//旋转
ObjectAnimator rotationX = ObjectAnimator.ofFloat(img, "rotationX", 0, 180);
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.setDuration(5000);
animatorSet.play(scaleX).with(translationX).before(alpha).after(rotationX);
animatorSet.start(); .//必须写
2)、
Xml里面设个id
第一种:
iv_photo = (ImageView) findViewById(R.id.iv_photo);
ObjectAnimator translationX = ObjectAnimator.ofFloat(iv_photo, "translationX", 0, 500, 0);
translationX.setDuration(6000);
translationX.start(); //必须有 不然不出效果
第二种:
ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, 3, 2,1);
valueAnimator.setDuration(10000);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
iv_photo.setScaleX((Float)animation.getAnimatedValue());
iv_photo.setTranslationY((Float)animation.getAnimatedValue());
}
});
valueAnimator.start(); //必须有 不然不出效果
第三种:
ValueAnimator valueAnimator = ValueAnimator.ofFloat(0.5f,5,3);
valueAnimator.setDuration(10000);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
iv_photo.setScaleX((Float)animation.getAnimatedValue());
iv_photo.setScaleY((Float)animation.getAnimatedValue());
}
});
valueAnimator.start(); //必须有 不然不出效果
第四种:
ValueAnimator valueAnimator = ValueAnimator.ofFloat(0,1,0,1,0);
valueAnimator.setDuration(5000) ;
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
Float values = (Float) animation.getAnimatedValue();
iv_photo.setRotationX(180);
iv_photo.setAlpha(values);
}
});
valueAnimator.start(); //必须有 不然不出效果
**
二、补间动画
**
(set可以写好几种)
<set xmlns:android="http://schemas.android.com/apk/res/android">
//透明度: 值的范围从0-1,float类型
<alpha
android:fromAlpha="1"
android:toAlpha="0"
android:duration="3000"
/>
//缩放 : 值的范围0-1-n,float类型,0-1代表缩小,1-n代表放大
<scale
android:fromXScale="1"
android:fromYScale="1"
android:toXScale="2"
android:toYScale="2"
android:pivotX="50%"
android:pivotY="50%"
android:duration="3000"
/>
//旋转: 值的范围是-n - 0 - n,int类型(代表旋转的角度,360为一圈)
<rotate
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:duration="3000"
/>
//位移: 值的范围-n - 0 - n int类型
<translate
android:fromXDelta="100"
android:fromYDelta="100"
android:toXDelta="500"
android:toYDelta="500"
android:duration="3000"
/>
</set>
单独写 必须写时间 不然没出效果
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="7200"
android:duration="3000">
</rotate>
Animation animation = AnimationUtils.loadAnimation(this, R.anim.rotate);
iv_photo.startAnimation(animation);
Animation animation1 = AnimationUtils.loadAnimation(this, R.anim.scale);
iv_photo.startAnimation(animation1);
*仅供参考 (一般很少用补间动画,属性动画居多)