运用属性动画实现图标的竖直弹出

来源:互联网 发布:天猫耐克官网抢鞋软件 编辑:程序博客网 时间:2024/06/05 16:05
1,首先是布局,用到了帧布局,其实用相对布局也是可以的,另外还有注意的一点是需要将显示的图片放到最上面
</pre><pre name="code" class="html"><?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"             android:layout_width="match_parent"             android:layout_height="match_parent">    <ImageView        android:id="@+id/a"        android:layout_width="50dp"        android:layout_height="50dp"        android:background="@drawable/a"/>    <ImageView        android:id="@+id/b"        android:layout_width="50dp"        android:layout_height="50dp"        android:background="@drawable/b"/>    <ImageView        android:id="@+id/c"        android:layout_width="50dp"        android:layout_height="50dp"        android:background="@drawable/c"/>    <ImageView        android:id="@+id/d"        android:layout_width="50dp"        android:layout_height="50dp"        android:background="@drawable/d"/>    <ImageView        android:id="@+id/e"        android:layout_width="50dp"        android:layout_height="50dp"        android:background="@drawable/e"/></FrameLayout>

2.接下来是java代码的书写,我定义的最上面的图片的监听事件来对下面的图片进行动画控制,定义一个数组来存放图片,方便找到控件,

package com.example.nete.animator2;import android.animation.ObjectAnimator;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;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;public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private int[] res = {R.id.e, R.id.d, R.id.c, R.id.b, R.id.a};    private List<ImageView> mImageViewList = new ArrayList<ImageView>();    private boolean flag = true;//设置该属性用于收回图标    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.pic);        for (int i = 0; i < res.length; i++) {            ImageView imageView = (ImageView) findViewById(res[i]);            imageView.setOnClickListener(this);            mImageViewList.add(imageView);//将图片添加到list,用于之后的设置动画        }    }    @Override    public void onClick(View view) {        switch (view.getId()) {            case R.id.e: {                if (flag) {                    startanim();                } else {                    closeanim();                }            }            break;                       default:            {                Toast.makeText(MainActivity.this,"click"+view.getId(),Toast.LENGTH_LONG).show();            }            break;        }    }//设置再次点击时 回收图标    private void closeanim() {        for (int i = 1; i < res.length; i++) {            ObjectAnimator animator = ObjectAnimator.ofFloat(mImageViewList.get(i), "translationY", i * 150f, 0);            animator.setDuration(500);            animator.setStartDelay(300);            animator.start();            flag = true;        }    }    //设置点击按钮时开始展开出菜单    private void startanim() {        for (int i = 1; i < res.length; i++) {            ObjectAnimator animator = ObjectAnimator.ofFloat(mImageViewList.get(i), "translationY", 0, i * 150f);            animator.setDuration(i*500);            //设置开始动画时有个时间的延迟            animator.setStartDelay(i*300);            //插值器,让动画结束时有个回弹的效果,大家也可以试试其他效果,还是挺有趣的            animator.setInterpolator(new BounceInterpolator());            animator.start();            flag = false;        }    }}



0 0
原创粉丝点击