From 15cd434674051e5d29215b47862686c773625fd4 Mon Sep 17 00:00:00 2001 From: Linjiajia <319408893@qq.com> Date: 星期五, 28 四月 2023 23:20:02 +0800 Subject: [PATCH] 代码提交 --- app/src/main/java/com/application/zhangshi_app_android/ui/function/GrowthExperienceActivity.java | 215 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 214 insertions(+), 1 deletions(-) diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/GrowthExperienceActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/GrowthExperienceActivity.java index 5f08ed5..c18bd94 100644 --- a/app/src/main/java/com/application/zhangshi_app_android/ui/function/GrowthExperienceActivity.java +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/GrowthExperienceActivity.java @@ -1,9 +1,36 @@ package com.application.zhangshi_app_android.ui.function; +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.ValueAnimator; +import android.view.View; +import android.view.ViewGroup; +import android.view.animation.Animation; +import android.view.animation.Transformation; +import android.widget.FrameLayout; +import android.widget.LinearLayout; + + +import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.lifecycle.Observer; + +import com.android.app_base.utils.ToastUtils; +import com.android.app_base.widget.LinearItemDecoration; import com.application.zhangshi_app_android.BR; import com.application.zhangshi_app_android.R; +import com.application.zhangshi_app_android.adapter.GrowthExperienceAbroadConditionRvAdapter; +import com.application.zhangshi_app_android.adapter.GrowthExperienceHolderConditionRvAdapter; +import com.application.zhangshi_app_android.adapter.GrowthExperiencePrimaryRvAdapter; +import com.application.zhangshi_app_android.adapter.GrowthExperienceRelationshipRvAdapter; +import com.application.zhangshi_app_android.bean.GrowthExperienceAbroadConditionBean; +import com.application.zhangshi_app_android.bean.GrowthExperienceAutobiographyBean; +import com.application.zhangshi_app_android.bean.GrowthExperienceBean; +import com.application.zhangshi_app_android.bean.GrowthExperienceHolderConditionBean; +import com.application.zhangshi_app_android.bean.GrowthExperienceRelationshipBean; import com.application.zhangshi_app_android.databinding.ActivityGrowthExperienceBinding; import com.application.zhangshi_app_android.ui.DLBaseActivity; +import com.google.android.material.tabs.TabLayout; +import java.util.List; /** * @author Gss @@ -11,6 +38,10 @@ * @desc 鎴愰暱缁忓巻 GrowthExperienceActivity */ public class GrowthExperienceActivity extends DLBaseActivity<ActivityGrowthExperienceBinding,GrowthExperienceActivityViewModel> { + private GrowthExperiencePrimaryRvAdapter primaryRvAdapter; + private GrowthExperienceRelationshipRvAdapter relationshipRvAdapter; + private GrowthExperienceHolderConditionRvAdapter holderConditionRvAdapter; + private GrowthExperienceAbroadConditionRvAdapter abroadConditionRvAdapter; @Override public int getLayoutId() { @@ -29,19 +60,201 @@ @Override public void initView() { + primaryRvAdapter = new GrowthExperiencePrimaryRvAdapter(this); + relationshipRvAdapter = new GrowthExperienceRelationshipRvAdapter(this); + holderConditionRvAdapter = new GrowthExperienceHolderConditionRvAdapter(this ); + abroadConditionRvAdapter = new GrowthExperienceAbroadConditionRvAdapter(this); + + LinearItemDecoration itemDecoration = new LinearItemDecoration(); + itemDecoration.setBottomSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_12)); + + binding.rvPrimary.addItemDecoration(itemDecoration); + binding.rvPrimary.setNestedScrollingEnabled(false); + binding.rvPrimary.setAdapter(primaryRvAdapter); + binding.rvRelationship.addItemDecoration(itemDecoration); + binding.rvRelationship.setNestedScrollingEnabled(false); + binding.rvRelationship.setAdapter(relationshipRvAdapter); + binding.rvCertificates.addItemDecoration(itemDecoration); + binding.rvCertificates.setNestedScrollingEnabled(false); + binding.rvCertificates.setAdapter(holderConditionRvAdapter); + binding.rvAbroad.addItemDecoration(itemDecoration); + binding.rvAbroad.setNestedScrollingEnabled(false); + binding.rvAbroad.setAdapter(abroadConditionRvAdapter); } @Override public void initData() { - + viewModel.getInfo(); + viewModel.getGrowthExperience(); + viewModel.getRelation(); + viewModel.getHolder(); + viewModel.getAbroad(); + viewModel.getGrowthExperienceAutobiography(); } @Override public void initLiveDataObserve() { + viewModel.getIsExperienceExpendedLiveData().observe(this, aBoolean -> { + if (aBoolean){ + binding.ivExperienceFold.setOnClickListener(view -> { + collapseView(binding.layoutExperience,binding.layoutExperienceTitle); + viewModel.getIsExperienceExpendedLiveData().setValue(false); + }); + }else { + binding.ivExperienceFold.setOnClickListener(view -> { + expendView(binding.layoutExperience); + viewModel.getIsExperienceExpendedLiveData().setValue(true); + }); + } + }); + viewModel.getIsRelationExpendedLiveData().observe(this, aBoolean -> { + if (aBoolean){ + binding.ivRelationFold.setOnClickListener(view -> { + collapseView(binding.layoutRelation,binding.layoutRelationTitle); + viewModel.getIsRelationExpendedLiveData().setValue(false); + }); + }else { + binding.ivRelationFold.setOnClickListener(view -> { + expendView(binding.layoutRelation); + viewModel.getIsRelationExpendedLiveData().setValue(true); + }); + } + }); + viewModel.getIsHolderExpendedLiveData().observe(this, aBoolean -> { + if (aBoolean){ + binding.ivHolderFold.setOnClickListener(view -> { + collapseView(binding.layoutHolder,binding.layoutHolderTitle); + viewModel.getIsHolderExpendedLiveData().setValue(false); + }); + }else { + binding.ivHolderFold.setOnClickListener(view -> { + expendView(binding.layoutHolder); + viewModel.getIsHolderExpendedLiveData().setValue(true); + }); + } + }); + viewModel.getIsAbroadExpendedLiveData().observe(this, aBoolean -> { + if (aBoolean){ + binding.ivAbroadFold.setOnClickListener(view -> { + collapseView(binding.layoutAbroad,binding.layoutAbroadTitle); + viewModel.getIsAbroadExpendedLiveData().setValue(false); + }); + }else { + binding.ivAbroadFold.setOnClickListener(view -> { + expendView(binding.layoutAbroad); + viewModel.getIsAbroadExpendedLiveData().setValue(true); + }); + } + }); + viewModel.getExperienceListLiveData().observe(this, new Observer<List<GrowthExperienceBean>>() { + @Override + public void onChanged(List<GrowthExperienceBean> growthExperienceBeans) { + primaryRvAdapter.setData(growthExperienceBeans); + } + }); + viewModel.getRelationLiveData().observe(this, new Observer<List<GrowthExperienceRelationshipBean>>() { + @Override + public void onChanged(List<GrowthExperienceRelationshipBean> growthExperienceRelationshipBeans) { + relationshipRvAdapter.setData(growthExperienceRelationshipBeans); + } + }); + viewModel.getHolderLiveData().observe(this, new Observer<List<GrowthExperienceHolderConditionBean>>() { + @Override + public void onChanged(List<GrowthExperienceHolderConditionBean> growthExperienceHolderConditionBeans) { + holderConditionRvAdapter.setData(growthExperienceHolderConditionBeans); + } + }); + viewModel.getAbroadLiveData().observe(this, new Observer<List<GrowthExperienceAbroadConditionBean>>() { + @Override + public void onChanged(List<GrowthExperienceAbroadConditionBean> growthExperienceAbroadConditionBeans) { + abroadConditionRvAdapter.setData(growthExperienceAbroadConditionBeans); + } + }); + viewModel.getAutobiographyLiveData().observe(this, new Observer<List<GrowthExperienceAutobiographyBean>>() { + @Override + public void onChanged(List<GrowthExperienceAutobiographyBean> beans) { + binding.tabLayout.removeAllTabs(); + for (int i = 0; i < beans.size(); i++) { + GrowthExperienceAutobiographyBean bean = beans.get(i); + String tabText = bean.getAgeBegin()+"-"+bean.getAgeEnd()+"宀�("+bean.getTerm()+")"; + TabLayout.Tab tab = binding.tabLayout.newTab().setText(tabText); + if (i % 2 == 0){ + tab.view.setBackgroundResource(R.drawable.selector_tab_background_pink); + }else { + tab.view.setBackgroundResource(R.drawable.selector_tab_background_blue); + } + //鍙栨秷tab鐨勯暱鎸夋樉绀烘枃鏈� + tab.view.setOnLongClickListener(new View.OnLongClickListener() { + @Override + public boolean onLongClick(View v) { + return true; + } + }); + binding.tabLayout.addTab(tab); + } + binding.tvFill.setText(beans.get(0).getContent()); + binding.tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { + @Override + public void onTabSelected(TabLayout.Tab tab) { + binding.tvFill.setText(beans.get(tab.getPosition()).getContent()); + } + + @Override + public void onTabUnselected(TabLayout.Tab tab) { + + } + + @Override + public void onTabReselected(TabLayout.Tab tab) { + + } + }); + } + }); } + 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(); + } } -- Gitblit v1.9.1