目的:按钮点击的实现(纵向展开)
技术:1.点击的实现 2.获取xml里面的所有图片视图 3.将id号对应的图片读取出来 4.取出一个图片视图 5.给视图添加移动动画
1.xml代码
<ImageView
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<ImageView> 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();
}
}
}