2019-07-28 Day1 菜单动画

目的:按钮点击的实现(纵向展开)


技术:1.点击的实现  2.获取xml里面的所有图片视图  3.将id号对应的图片读取出来  4.取出一个图片视图  5.给视图添加移动动画


1.xml代码

    

        android:layout_width="70dp"

        android:layout_height="70dp"

        android:src="@mipmap/a"

        android:layout_centerHorizontal="true"

        android:layout_marginTop="5dp"

        android:onClick="imgClicked"/>

//**onClick ALT+ENT creat

*/


2.java代码 点击的实现

package com.example.photo;


import androidx.appcompat.app.AppCompatActivity;


import android.animation.ObjectAnimator;

import android.os.Bundle;

import android.view.View;

import android.view.animation.BounceInterpolator;

import android.widget.ImageView;


import java.util.ArrayList;

import java.util.List;


public class MainActivity extends AppCompatActivity {

    /**

*  1.获取xml里面的所有图片视图

*   -先用一个数组保存所有视图的id号

*   -用一个数组保存所有id号对应的视图

     */

    private  int[] resID = {R.id.iv_b,R.id.iv_c,R.id.iv_d,R.id.iv_e,R.id.iv_f,R.id.iv_g,R.id.iv_h};

    private List  imageViews = new ArrayList<>();


    /**

*定义一个变量 用来记录按钮的状态

     *  isopen

     */

    private boolean isOpen = false;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        /**

*  2.将id号对应的图片读取出来

         */

         for (int i = 0;i < resID.length;i++){

             int id = resID[i];

             ImageView img =findViewById(id);

             imageViews.add(img);

         }

    }


    public void imgClicked(View view) {

        /**

*判断是打开还是关闭

         */

        if(isOpen == true){

//应该关闭 收回列表

            close();

        } else{

//应该打开 展开列表

            open();

        }

        isOpen = !isOpen;

    }


    private void close(){

        for (int i=0; i < imageViews.size(); i++){

//取出一个图片视图

            ImageView iv = imageViews.get(i);

//给这个视图添加移动动画

            ObjectAnimator oa = ObjectAnimator.ofFloat(iv,"translationY",(i+1)*85f,0f);

            oa.setDuration(1000);

            oa.start();

        }

    }


    private void open(){

        for (int i=0; i < imageViews.size(); i++){

//取出一个图片视图

            ImageView iv = imageViews.get(i);

//给这个视图添加移动动画

            ObjectAnimator oa = ObjectAnimator.ofFloat(iv,"translationY",0f,(i+1)*85f);

            oa.setDuration(1000);

            oa.setInterpolator(new BounceInterpolator());

            oa.start();

        }

    }

}

你可能感兴趣的:(2019-07-28 Day1 菜单动画)