ObjectAnimator的使用

【ObjectAnimator的使用】ObjectAnimator是属性动画中一个很重要的类,它是继承自ValueAnimator的。通过ObjectAnimator的静态工厂方法可以创建一实例。可以调用一系列的重载的方法来完成动画的使用。
这里通过这些代码完成一个点击一张图片弹出所有图片
ObjectAnimator可以在代码中实现也可以通过xml
ObjectAnimator的使用
文章图片


package com.example.myscan; import android.animation.ObjectAnimator; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.animation.BounceInterpolator; import android.widget.ImageView; import android.widget.Toast; import java.util.ArrayList; import java.util.List; /** * Created by Administrator on 2016/8/20. */ public class MyAnimator extends Activity implements View.OnClickListener { /** * 存放图片资源的数组 */ private int[] img = new int[]{R.id.image01, R.id.image02, R.id.image03, R.id.image04, R.id.image05, R.id.image06, R.id.image07}; private List list = new ArrayList<>(); //存放ImageView的集合 private boolean temp = true; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.my_animator); /** * 初始化数据并绑定 */ for (int i = 0; i < img.length; i++) { ImageView image = (ImageView) findViewById(img[i]); image.setOnClickListener(this); list.add(image); } }/** * ImageView 的点击事件 * * @param view */ @Override public void onClick(View view) {switch (view.getId()) { case R.id.image01://当点击第一张的时候,触发动画,让其他的图片显示出来 if (temp) {//如果temp我true的话,就开始出现图片 initAnimator(); } else { closeAnimator(); //否则就收回这些图片 } break; default: Toast.makeText(MyAnimator.this,"点击"+view.getId(),Toast.LENGTH_SHORT).show(); break; } }/** * 收回图片 */ private void closeAnimator() { for (int i = 1; i < img.length; i++) { ObjectAnimator animator = ObjectAnimator.ofFloat(list.get(i), "translationY", i * 150, 0); animator.setDuration(300); animator.setInterpolator(new BounceInterpolator()); animator.setStartDelay(i * 300); animator.start(); temp=true; } }/** * 打开动画效果 */ private void initAnimator() { for (int i = 1; i < img.length; i++) { ObjectAnimator animator = ObjectAnimator.ofFloat(list.get(i), "translationY", 0, i * 150); animator.setDuration(300); animator.setInterpolator(new BounceInterpolator()); animator.setStartDelay(i * 300); animator.start(); temp = false; //此时将temp设置为false,则下次再次点击时,就会触发收回图片的动作 } } }

    推荐阅读