package com.application.zhangshi_app_android.ui.function;
|
|
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;
|
import android.view.animation.Transformation;
|
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
|
* @date 2023.04.28. 13:51
|
* @desc 健康保健 Activity
|
*/
|
public class HealthCareActivity extends DLBaseActivity<ActivityHealthCareBinding,HealthCareActivityViewModel> {
|
|
private PopupWindow popupWindow;
|
private int popWidth;
|
@Override
|
public int getLayoutId() {
|
return R.layout.activity_health_care;
|
}
|
|
@Override
|
public int getVariableId() {
|
return BR.viewModel;
|
}
|
|
@Override
|
public void initParam() {
|
|
}
|
|
@Override
|
public void initView() {
|
View view = View.inflate(this,R.layout.pop_annual_health_status,null);
|
popupWindow = initPopUpWindow(view);
|
|
view.findViewById(R.id.tv_annual_health_status).setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
popupWindow.dismiss();
|
AppManager.getAppManager().startActivity(AnnualHealthStatusActivity.class);
|
}
|
});
|
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.layoutTitleLifeHabits.setOnClickListener(view -> {
|
collapseView(binding.cardLifeHabits,binding.layoutTitleLifeHabits);
|
viewModel.getIsLifeHabitsExpendedLiveData().setValue(false);
|
});
|
}else {
|
binding.layoutTitleLifeHabits.setOnClickListener(view -> {
|
expendView(binding.cardLifeHabits);
|
viewModel.getIsLifeHabitsExpendedLiveData().setValue(true);
|
});
|
}
|
});
|
viewModel.getIsHealthExpendedLiveData().observe(this, aBoolean -> {
|
if (aBoolean){
|
binding.layoutTitleHealth.setOnClickListener(view -> {
|
collapseView(binding.cardHealth,binding.layoutTitleHealth);
|
viewModel.getIsHealthExpendedLiveData().setValue(false);
|
});
|
}else {
|
binding.layoutTitleHealth.setOnClickListener(view -> {
|
expendView(binding.cardHealth);
|
viewModel.getIsHealthExpendedLiveData().setValue(true);
|
});
|
}
|
});
|
viewModel.getIsNursingExpendedLiveData().observe(this, aBoolean -> {
|
if (aBoolean){
|
binding.layoutTitleNursing.setOnClickListener(view -> {
|
collapseView(binding.cardNursing,binding.layoutTitleNursing);
|
viewModel.getIsNursingExpendedLiveData().setValue(false);
|
});
|
}else {
|
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("点击了A");
|
System.out.println(v.isClickable());
|
System.out.println(viewModel.getTypeLiveData().getValue());
|
}
|
});
|
}
|
|
public void collapseView(View initialView,View collapsedView){
|
int initialHeight = initialView.getMeasuredHeight();
|
int collapsedHeight = collapsedView.getMeasuredHeight();
|
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();
|
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();
|
}
|
|
}
|