第一:布局一个图片,一个文字;
第二:代码
package com.bwei.www.asdfghjk;
import android.animation.Animator;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.DecelerateInterpolator;
import android.view.animation.LinearInterpolator;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import static android.animation.ObjectAnimator.ofFloat;
public class Main2Activity extends AppCompatActivity {
private ImageView img;
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
img = (ImageView) findViewById(R.id.img);
tv = findViewById(R.id.tv);
img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//final ValueAnimator animator = ValueAnimator.ofInt(1, 9);
final ValueAnimator animator = ValueAnimator.ofFloat(0, 1);
// animator.setDuration(3000);
// animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
// @Override
// public void onAnimationUpdate(ValueAnimator valueAnimator) {
// Log.i("-=-=-=--=", "onAnimationUpdate: "+animator.getAnimatedValue());
// }
// });
// animator.start();
//img.setTranslationX(500);
// 属性动画可以完成补间动画的所有效果,也可以实现其他补间动画没有的效果,
// 属性动画本质上是改变了视图的属性,所以只要视图有公开的set方法,就可以进行变换
//设置透明度
ObjectAnimator alpha = ofFloat(
img, "alpha", 1, 0
);
alpha.setDuration(3000);
alpha.start();
//设置位移
ObjectAnimator objectAnimator = ofFloat(
img, "translationX", 0, 500
);
objectAnimator.setDuration(3000);
objectAnimator.start();
//动画监听结束后的事件
objectAnimator.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
}
//动画结束后
@Override
public void onAnimationEnd(Animator animator) {
Toast.makeText(Main2Activity.this,"动画结束了",Toast.LENGTH_SHORT).show();
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});
}
});
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// //旋转动画
// ObjectAnimator rotation = ofFloat(
// tv,"rotation",0, 360
// );
// //设置时长
// rotation.setDuration(3000);
// //开始
// rotation.start();
// //设置位移
// ObjectAnimator objectAnimator = ofFloat(
// tv, "translationX", 0, 500
// ) ;
// objectAnimator.setDuration(3000);
// //重复次数
// objectAnimator.setRepeatCount(3);
// objectAnimator.start();
// //动画集合
// Animator animatr01 = ObjectAnimator.ofFloat(
// tv,
// "translationX",
// 0, 500
// );
// Animator animatr02 = ObjectAnimator.ofFloat(
// tv,
// "rotation",
// 0, 360
// );
// Animator animatr03 = ObjectAnimator.ofFloat(
// tv,
// "alpha",
// 0, 1
// );
//
// Animator animatr04 = ObjectAnimator.ofFloat(
// tv,
// "scaleX",
// 0,6
// );
// 旋转-透明度/平移-缩放
// // 动画的集合
// AnimatorSet set = new AnimatorSet();
// set.setDuration(3000);
// set.play(animatr01) // 平移
// // 在。。。之后
// .after(animatr02) // 旋转
// // 和....一起
// .with(animatr03) // 透明度
// // 在。。。。之前
// .before(animatr04); // 缩放
// set.start();
//动画自定义差值器
ObjectAnimator animatr = ObjectAnimator.ofFloat(
tv,
"translationX",
0, 500
);
//先加速后减速
animatr.setInterpolator(new AccelerateDecelerateInterpolator());
//加速
animatr.setInterpolator(new AccelerateInterpolator());
//减速
animatr.setInterpolator(new DecelerateInterpolator());
//匀速
animatr.setInterpolator(new LinearInterpolator());
animatr.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
Log.i("==========", "onAnimationUpdate:" + animation.getAnimatedValue());
}
});
animatr.setDuration(3000);
// animatr.setRepeatCount(3);
animatr.start();
}
});
}
}