目的:按钮点击的实现(纵向展开)
技术: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 /** *定义一个变量 用来记录按钮的状态 * 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(); } } }