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