【ObjectAnimator的使用】ObjectAnimator是属性动画中一个很重要的类,它是继承自ValueAnimator的。通过ObjectAnimator的静态工厂方法可以创建一实例。可以调用一系列的重载的方法来完成动画的使用。
这里通过这些代码完成一个点击一张图片弹出所有图片
ObjectAnimator可以在代码中实现也可以通过xml
文章图片
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,则下次再次点击时,就会触发收回图片的动作
}
}
}
推荐阅读
- Android修改系统的默认日期(Spreadturm)
- android学习——AsyncTast 异步操作和 ProgressBar
- Android学习|Android Studio快捷键提高工作效率的奇技
- LinearLayout中动态添加Fragment不能填充整个Activity的问题
- android学习|TouchDelegate的用法
- Java学习|Android中的位运算
- android设置launcher app
- Android学习|android 动画总结
- Android学习|【Android-动画】属性动画基本介绍及使用方式