package com.application.zhangshi_app_android.adapter; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.view.animation.Animation; import android.view.animation.Transformation; import androidx.annotation.NonNull; import androidx.databinding.ViewDataBinding; import androidx.recyclerview.widget.RecyclerView; import com.android.app_base.base.adapter.BaseRVAdapter; import com.application.zhangshi_app_android.R; import com.application.zhangshi_app_android.bean.DailyConsumeRecordBean; import com.application.zhangshi_app_android.databinding.ItemDailyConsumeRecordBinding; import com.application.zhangshi_app_android.databinding.ItemPropertyBinding; /** * @author Ljj * @date 2023.04.28. 22:28 * @desc 每日消费记录适配器 */ public class DailyConsumeRecordRvAdapter extends BaseRVAdapter { public DailyConsumeRecordRvAdapter(Context context) { super(context); } @Override protected int getLayoutId() { return R.layout.item_daily_consume_record; } @Override protected void onBind(ViewHolder holder, int position) { } @Override protected ViewHolder getViewHolder(ItemDailyConsumeRecordBinding itemBind, int viewType) { return new ViewHolder(itemBind); } public static class ViewHolder extends BaseRVAdapter.BaseViewHolder { private boolean isExpended; public ViewHolder(ItemDailyConsumeRecordBinding binding) { super(binding); } } public void collapseView(View initialView, View collapsedView){ int initialHeight = initialView.getMeasuredHeight(); int collapsedHeight = collapsedView.getMeasuredHeight(); int distanceToCollapse = (int) (initialHeight - collapsedHeight); Animation a = new Animation() { @Override protected void applyTransformation(float interpolatedTime, Transformation t) { if (interpolatedTime == 1){ } initialView.getLayoutParams().height = (int) (initialHeight - (distanceToCollapse * interpolatedTime)); initialView.requestLayout(); } @Override public boolean willChangeBounds() { return true; } }; a.setDuration(500); initialView.startAnimation(a); } public void expendView(View initialView){ int initialHeight = initialView.getMeasuredHeight(); initialView.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED); int targetHeight = initialView.getMeasuredHeight(); ValueAnimator animator = ValueAnimator.ofInt(initialHeight,targetHeight); animator.addUpdateListener(animation -> { initialView.getLayoutParams().height = (int) animation.getAnimatedValue(); initialView.requestLayout(); }); animator.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { initialView.getLayoutParams().height = ViewGroup.LayoutParams.WRAP_CONTENT; initialView.setLayoutParams(initialView.getLayoutParams()); } }); animator.setDuration(500); animator.start(); } }