效果图
代码:
Main3Activity中
activity_main3.xmlpackage com.zhh.android; import android.animation.ObjectAnimator; import android.app.Activity; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; 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; /** * 利用ObjectAnimator * 实现一个菜单 */ public class Main3Activity extends Activity implements View.OnClickListener { // 写一个存放图片的数组 private int[] imageArray = {R.id.imageViewA, R.id.imageViewB, R.id.imageViewC, R.id.imageViewD, R.id.imageViewE, R.id.imageViewF, R.id.imageViewG, R.id.imageViewH,}; private ArrayList<ImageView> imageViewArray = new ArrayList<>(); private boolean flag=true; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main3); for (int i = 0; i < imageArray.length; i++) { ImageView imageView = (ImageView) findViewById(imageArray[i]); imageView.setOnClickListener(this); imageViewArray.add(imageView); } } @Override public void onClick(View v) { switch (v.getId()) { case R.id.imageViewA: if(flag) { startAnimator(); }else{ closeAnimator(); } break; default: Toast.makeText(Main3Activity.this, "点击事件"+v.getId(), Toast.LENGTH_SHORT).show(); startActivity(new Intent(Main3Activity.this,Main4Activity.class)); break; } } /** * 展开菜单 */ private void startAnimator(){ Log.e("111","startAnimator"); for(int i = 1; i <imageArray.length ; i++) { ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(imageViewArray.get(i),"translationY",0F,i*200F); objectAnimator.setDuration(500); //有加速度(速度是不断增加的)有回弹效果 objectAnimator.setInterpolator(new BounceInterpolator()); objectAnimator.setStartDelay(i*300);//动画延时执行 objectAnimator.start(); } flag=false; } /** * 关闭菜单 */ private void closeAnimator(){ Log.e("111","closeAnimator"); for(int i = 1; i <imageArray.length ; i++) { ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(imageViewArray.get(i),"translationY",i*200F,0F); objectAnimator.setDuration(500); // 有加速度(速度是不断增加的)有回弹效果 objectAnimator.setInterpolator(new BounceInterpolator()); objectAnimator.setStartDelay(i*300);//动画延时执行 objectAnimator.start(); } flag=true; } }
参考视频:<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.zhh.android.Main3Activity"> <ImageView android:id="@+id/imageViewB" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/b" android:layout_centerHorizontal="true" /> <ImageView android:id="@+id/imageViewC" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/c" android:layout_centerHorizontal="true" /> <ImageView android:id="@+id/imageViewD" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/d" android:layout_centerHorizontal="true" /> <ImageView android:id="@+id/imageViewE" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/e" android:layout_centerHorizontal="true" /> <ImageView android:id="@+id/imageViewF" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/f" android:layout_centerHorizontal="true" /> <ImageView android:id="@+id/imageViewG" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/g" android:layout_centerHorizontal="true" /> <ImageView android:id="@+id/imageViewH" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/h" android:layout_centerHorizontal="true" /> <ImageView android:id="@+id/imageViewA" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/a" android:layout_centerHorizontal="true" /> </RelativeLayout>
http://www.imooc.com/learn/263
源码下载:
http://download.csdn.net/download/zhaihaohao1/10126123