From 82e57df230ecb744af6c8865f80870ba03c86d89 Mon Sep 17 00:00:00 2001 From: Linjiajia <319408893@qq.com> Date: 星期二, 25 七月 2023 22:18:27 +0800 Subject: [PATCH] 基本功能完成 --- app/src/main/java/com/application/zhangshi_app_android/ui/function/HealthCareActivity.java | 194 +++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 166 insertions(+), 28 deletions(-) diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/HealthCareActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/HealthCareActivity.java index dd46dac..40c3e98 100644 --- a/app/src/main/java/com/application/zhangshi_app_android/ui/function/HealthCareActivity.java +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/HealthCareActivity.java @@ -3,6 +3,8 @@ import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; +import android.text.Editable; +import android.text.TextWatcher; import android.view.View; import android.view.ViewGroup; import android.view.animation.Animation; @@ -10,12 +12,24 @@ import android.widget.FrameLayout; import android.widget.PopupWindow; +import androidx.lifecycle.Observer; + import com.android.app_base.manager.AppManager; import com.android.app_base.utils.ScreenSizeUtils; +import com.android.app_base.utils.Utils; import com.application.zhangshi_app_android.BR; import com.application.zhangshi_app_android.R; +import com.application.zhangshi_app_android.bean.GrowthExperienceAutobiographyBean; +import com.application.zhangshi_app_android.bean.HealthCareNotesContentBean; import com.application.zhangshi_app_android.databinding.ActivityHealthCareBinding; import com.application.zhangshi_app_android.ui.DLBaseActivity; +import com.github.gzuliyujiang.wheelpicker.OptionPicker; +import com.github.gzuliyujiang.wheelpicker.contract.OnOptionPickedListener; +import com.google.android.material.tabs.TabLayout; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; /** * @author Ljj @@ -53,29 +67,73 @@ AppManager.getAppManager().startActivity(AnnualHealthStatusActivity.class); } }); - - binding.ivOperate.setOnClickListener(v -> { - popupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,118) +binding.ivOperate.getWidth(),0); + view.findViewById(R.id.tv_edit).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + popupWindow.dismiss(); + viewModel.setTypeLiveData(true); + } }); + binding.tvSex.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + List<String> list = Arrays.asList("濂�","鐢�"); + OptionPicker picker = getOptionPicker(list); + picker.setTitle("鎬у埆"); + picker.setOnOptionPickedListener(new OnOptionPickedListener() { + @Override + public void onOptionPicked(int position, Object item) { + binding.tvSex.setText(item.toString()); + } + }); + picker.show(); + } + }); + + final int SCROLL_THRESHOLD = 400; // 婊戝姩闃堝�硷紝鎸夐挳鍦ㄦ粦鍔ㄨ秴杩囪闃堝�煎悗寮�濮嬫牴鎹秴鍑洪槇鍊艰窛绂绘笎娓愭樉绀哄嚭鏉� + final int SCROLL_DISTANCE = 400; // 鎸夐挳浠庨殣钘忓埌鍏ㄩ儴鏄剧ず鍑烘潵闇�瑕佹粦鍔ㄧ殑璺濈 + binding.fabMoveToTop.setAlpha(0f); + binding.nestedScrollView.setOnScrollChangeListener(new View.OnScrollChangeListener() { + @Override + public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) { + // 褰撴粦鍔ㄨ窛绂昏秴杩囬槇鍊间竴鍗婃椂锛屽紑濮嬫參鎱㈡樉绀烘寜閽� + if (scrollY >= SCROLL_THRESHOLD) { + // 鏍规嵁婊戝姩璺濈璁剧疆鎸夐挳閫忔槑搴� + float alpha = Math.min(1.0f, (float) (scrollY - SCROLL_THRESHOLD) / SCROLL_DISTANCE); + binding.fabMoveToTop.setAlpha(alpha); + } else { + binding.fabMoveToTop.setAlpha(0f); + } + } + }); + binding.fabMoveToTop.setOnClickListener(v -> { + // 鐐瑰嚮鎸夐挳杩斿洖椤堕儴 + binding.nestedScrollView.smoothScrollTo(0, 0); + }); } @Override public void initData() { - + viewModel.getHealthCareBaseInfo(); + viewModel.getHealthCareLifeHabits(); + viewModel.getHealthCareNursingExamination(); + viewModel.getHealthCareExistingProblems(); + viewModel.getHealthCareNotesContent(); } @Override public void initLiveDataObserve() { + System.out.println("鎴�"+binding.ivA.isClickable()); viewModel.getIsLifeHabitsExpendedLiveData().observe(this, aBoolean -> { if (aBoolean){ - binding.ivLifeHabitsFold.setOnClickListener(view -> { + binding.layoutTitleLifeHabits.setOnClickListener(view -> { collapseView(binding.cardLifeHabits,binding.layoutTitleLifeHabits); viewModel.getIsLifeHabitsExpendedLiveData().setValue(false); }); }else { - binding.ivLifeHabitsFold.setOnClickListener(view -> { + binding.layoutTitleLifeHabits.setOnClickListener(view -> { expendView(binding.cardLifeHabits); viewModel.getIsLifeHabitsExpendedLiveData().setValue(true); }); @@ -83,12 +141,12 @@ }); viewModel.getIsHealthExpendedLiveData().observe(this, aBoolean -> { if (aBoolean){ - binding.ivHealthFold.setOnClickListener(view -> { + binding.layoutTitleHealth.setOnClickListener(view -> { collapseView(binding.cardHealth,binding.layoutTitleHealth); viewModel.getIsHealthExpendedLiveData().setValue(false); }); }else { - binding.ivHealthFold.setOnClickListener(view -> { + binding.layoutTitleHealth.setOnClickListener(view -> { expendView(binding.cardHealth); viewModel.getIsHealthExpendedLiveData().setValue(true); }); @@ -96,15 +154,111 @@ }); viewModel.getIsNursingExpendedLiveData().observe(this, aBoolean -> { if (aBoolean){ - binding.ivNursingFold.setOnClickListener(view -> { + binding.layoutTitleNursing.setOnClickListener(view -> { collapseView(binding.cardNursing,binding.layoutTitleNursing); viewModel.getIsNursingExpendedLiveData().setValue(false); }); }else { - binding.ivNursingFold.setOnClickListener(view -> { + binding.layoutTitleNursing.setOnClickListener(view -> { expendView(binding.cardNursing); viewModel.getIsNursingExpendedLiveData().setValue(true); }); + } + }); + viewModel.getTypeLiveData().observe(this, new Observer<Boolean>() { + @Override + public void onChanged(Boolean aBoolean) { + if (aBoolean){ + binding.ivOperate.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + viewModel.setTypeLiveData(false); + viewModel.save(); + } + }); + }else { + binding.ivOperate.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + popupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(HealthCareActivity.this,118) +binding.ivOperate.getWidth(),0); + } + }); + } + } + }); + viewModel.getHealthCareNotesContentBeanLiveData().observe(this, new Observer<HealthCareNotesContentBean>() { + @Override + public void onChanged(HealthCareNotesContentBean bean) { + List<String> tabList = bean.getTabList(); + List<String> contentList = bean.getContentList(); + if (tabList==null||tabList.size() == 0 ){ + binding.etFill.setVisibility(View.GONE); + return; + }else { + binding.etFill.setVisibility(View.VISIBLE); + } + binding.tabLayout.removeAllTabs(); + for (int i = 0; i < tabList.size(); i++) { + String tabText = tabList.get(i); + 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.etFill.setText(contentList.get(0)); + binding.tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { + @Override + public void onTabSelected(TabLayout.Tab tab) { + binding.etFill.setText(contentList.get(tab.getPosition())); + binding.etFill.clearFocus(); + } + + @Override + public void onTabUnselected(TabLayout.Tab tab) { + + } + + @Override + public void onTabReselected(TabLayout.Tab tab) { + + } + }); + binding.etFill.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + int select = binding.tabLayout.getSelectedTabPosition(); + contentList.set(select,s.toString()); + viewModel.getHealthCareNotesContentBeanLiveData().getValue().setContent(contentList); + } + + @Override + public void afterTextChanged(Editable s) { + + } + }); + } + }); + binding.ivA.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + System.out.println("鐐瑰嚮浜咥"); + System.out.println(v.isClickable()); + System.out.println(viewModel.getTypeLiveData().getValue()); } }); } @@ -112,29 +266,13 @@ 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); + Utils.pullCollapse(initialView,initialHeight,collapsedHeight); } 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(); -- Gitblit v1.9.1