1、修复添加按钮消失问题\n2、修改家族导图\n3、新增便捷添加功能\n4、新增修改头像功能\n5、个人财产增加搜索条件
28个文件已修改
7个文件已添加
1 文件已重命名
3692 ■■■■ 已修改文件
app/src/main/java/com/application/zhangshi_app_android/bean/PropertyRequestBean.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/DLBaseActivity.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/DLBaseFragment.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/dialog/TotalAddDialog.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/FunctionFragment.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/GrowthExperienceActivityViewModel.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/PropertyActivity.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/home/HomeFragment.java 455 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/home/HomeFragmentViewModel.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/main/MainActivity.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/personal_center/PersonalCenterFragment.java 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/personal_center/PersonalCenterFragmentViewModel.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/widget/DoubleNode.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/widget/HomeMindMapLayout.java 70 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/widget/Node.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/widget/SimpleNode.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/bg_home_root.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/ic_camera.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xxhdpi/bg_home_root.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xxhdpi/ic_camera.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_health_care.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_home_devices_detail.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_little_doctor_detail.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_login.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_marriage.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_property.xml 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/dialog_toatal_add.xml 272 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/fragment_function.xml 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/fragment_home.xml 1224 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/fragment_personal_center.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_family_member.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/pop_basic_information_double.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/pop_basic_information_single.xml 761 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/pop_operate_home_root_net.xml 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app_base/src/main/java/com/android/app_base/base/view/BaseActivity.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app_base/src/main/java/com/android/app_base/base/view/BaseFragment.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/bean/PropertyRequestBean.java
@@ -11,6 +11,9 @@
    private String type;//类型
    private String name;//名称
    private String term;//期限
    private String isChange;//变更或注销
    private int status = -1;//是否注销 1.是 0.否
    private String statusStr;//是否注销
    private String happenStartTime;//时间开始
    private String happenEndTime;//时间结束
@@ -46,12 +49,46 @@
        this.happenStartTime = happenStartTime;
    }
    public String getIsChange() {
        return isChange;
    }
    public void setIsChange(String isChange) {
        this.isChange = isChange;
    }
    public int getStatus() {
        return status;
    }
    public void setStatus(int status) {
        this.status = status;
    }
    public String getHappenEndTime() {
        return happenEndTime;
    }
    public void setHappenEndTime(String happenEndTime) {
        this.happenEndTime = happenEndTime;
    }
    public String getStatusStr() {
        if (status == 1){
            statusStr = "是";
        }else if (status == 0) {
            statusStr = "否";
        }
        return statusStr;
    }
    public void setStatusStr(String statusStr) {
        this.statusStr = statusStr;
        if ("是".equals(statusStr)) {
            status = 1;
        }else if ("否".equals(statusStr)) {
            status = 0;
        }
    }
    @Override
@@ -62,6 +99,10 @@
        map.put("term",term==null?"":term);
        map.put("happenStartTime",happenStartTime==null?"":happenStartTime);
        map.put("happenEndTime",happenEndTime==null?"":happenEndTime);
        map.put("isChange",isChange==null?"":isChange);
        if (status != -1){
            map.put("status",status);
        }
        return map;
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/DLBaseActivity.java
@@ -21,6 +21,8 @@
import com.android.app_base.manager.UserManager;
import com.android.app_base.utils.GlideUtil;
import com.android.app_base.utils.ScreenSizeUtils;
import com.android.app_base.utils.rxbus.MessageEvent;
import com.android.app_base.utils.rxbus.RxBus;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.ui.function.CertificateOfHonorActivity;
import com.application.zhangshi_app_android.ui.function.CleanStorageActivity;
@@ -54,6 +56,8 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import io.reactivex.functions.Consumer;
/**
 * @author Ljj
@@ -142,13 +146,23 @@
            mDrawerLayout.setScrimColor(getResources().getColor(R.color.color_shadow));
        }
        setNameAndAvatar(UserManager.getInstance().getUserName(),UserManager.getInstance().getUserAvatar());
        RxBus.getInstance().toObservable(this, MessageEvent.class).subscribe(new Consumer<MessageEvent>() {
            @Override
            public void accept(MessageEvent event) throws Exception {
                if(event.getMessageEventCode() == MessageEvent.EVENT_UPDATE_USER_INFO){
                    setNameAndAvatar(UserManager.getInstance().getUserName(),UserManager.getInstance().getUserAvatar());
                }
            }
        });
    }
    public void setNameAndAvatar(String name,String avatar){
        if (mDrawerLayout != null){
            GlideUtil.loadImage(UserManager.getInstance().getUserAvatar(), findViewById(R.id.dl_home_user_avatar));
            GlideUtil.loadImage(avatar, findViewById(R.id.dl_home_user_avatar));
            TextView userNameTv = findViewById(R.id.dl_home_user_name);
            userNameTv.setText(UserManager.getInstance().getUserName());
            userNameTv.setText(name);
        }
    }
    private void setSelectItem(LinearLayout linearLayout) {
app/src/main/java/com/application/zhangshi_app_android/ui/DLBaseFragment.java
@@ -22,6 +22,8 @@
import com.android.app_base.manager.AppManager;
import com.android.app_base.manager.UserManager;
import com.android.app_base.utils.GlideUtil;
import com.android.app_base.utils.rxbus.MessageEvent;
import com.android.app_base.utils.rxbus.RxBus;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.ui.function.CertificateOfHonorActivity;
import com.application.zhangshi_app_android.ui.function.CleanStorageActivity;
@@ -45,6 +47,8 @@
import java.util.HashMap;
import java.util.Map;
import io.reactivex.functions.Consumer;
/**
 * @author Ljj
@@ -143,10 +147,17 @@
                }
            }
            mDrawerLayout.setScrimColor(getResources().getColor(R.color.color_shadow));
            GlideUtil.loadImage(UserManager.getInstance().getUserAvatar(), findViewById(R.id.dl_home_user_avatar));
            TextView userNameTv = findViewById(R.id.dl_home_user_name);
            userNameTv.setText(UserManager.getInstance().getUserName());
        }
        setNameAndAvatar(UserManager.getInstance().getUserName(),UserManager.getInstance().getUserAvatar());
        RxBus.getInstance().toObservable(this, MessageEvent.class).subscribe(new Consumer<MessageEvent>() {
            @Override
            public void accept(MessageEvent event) throws Exception {
                if(event.getMessageEventCode() == MessageEvent.EVENT_UPDATE_USER_INFO){
                    setNameAndAvatar(UserManager.getInstance().getUserName(),UserManager.getInstance().getUserAvatar());
                }
            }
        });
    }
    private void setSelectItem(LinearLayout linearLayout) {
        if (linearLayout == null){
@@ -158,7 +169,13 @@
        imageView.setBackgroundResource(R.drawable.ic_vector_pink);
    }
    public void setNameAndAvatar(String name,String avatar){
        if (mDrawerLayout != null){
            GlideUtil.loadImage(avatar, findViewById(R.id.dl_home_user_avatar));
            TextView userNameTv = findViewById(R.id.dl_home_user_name);
            userNameTv.setText(name);
        }
    }
    /**
     * 获取DrawerLayout
     */
app/src/main/java/com/application/zhangshi_app_android/ui/dialog/TotalAddDialog.java
New file
@@ -0,0 +1,118 @@
package com.application.zhangshi_app_android.ui.dialog;
import android.content.Context;
import android.content.Intent;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
import androidx.databinding.DataBindingUtil;
import com.android.app_base.base.BaseConfig;
import com.android.app_base.base.dialog.BaseDialog;
import com.android.app_base.manager.AppManager;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.bean.PetBean;
import com.application.zhangshi_app_android.databinding.DialogPetOwnerInfoBinding;
import com.application.zhangshi_app_android.databinding.DialogToatalAddBinding;
import com.application.zhangshi_app_android.ui.function.AnnualHealthStatusDetailActivity;
import com.application.zhangshi_app_android.ui.function.CleanStorageDetailActivity;
import com.application.zhangshi_app_android.ui.function.FamilyMemorabiliaDetailActivity;
import com.application.zhangshi_app_android.ui.function.HomeDevicesDetailActivity;
import com.application.zhangshi_app_android.ui.function.IncomeAndExpensesDetailActivity;
import com.application.zhangshi_app_android.ui.function.LittleDoctorDetailActivity;
import com.application.zhangshi_app_android.ui.function.TourismDetailActivity;
/**
 * @author Ljj
 * @date 2023.09.16. 20:54
 * @desc 便捷添加弹窗
 */
public class TotalAddDialog {
    public static class Builder extends BaseDialog.Builder<TotalAddDialog.Builder> {
        private DialogToatalAddBinding binding;
        public Builder(Context context) {
            super(context);
            binding = DataBindingUtil.inflate(LayoutInflater.from(getContext()), R.layout.dialog_toatal_add,new FrameLayout(getContext()),false);
            setContentView(binding.getRoot());
            setAnimStyle(BaseDialog.ANIM_IOS);
            setBackgroundDimEnabled(false);
            setCancelable(true);
            setGravity(Gravity.CENTER);
            binding.ivDialogClose.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (getDialog() != null) {
                        getDialog().dismiss();
                    }
                }
            });
            binding.layoutFamilyMemorabilia.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    AppManager.getAppManager().startActivity(new Intent(context, FamilyMemorabiliaDetailActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1));
                    if (getDialog() != null) {
                        getDialog().dismiss();
                    }
                }
            });
            binding.layoutHomeDevices.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    AppManager.getAppManager().startActivity(new Intent(context, HomeDevicesDetailActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1));
                    if (getDialog() != null) {
                        getDialog().dismiss();
                    }
                }
            });
            binding.layoutLittleDoctor.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    AppManager.getAppManager().startActivity(new Intent(context, LittleDoctorDetailActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1));
                    if (getDialog() != null) {
                        getDialog().dismiss();
                    }
                }
            });
            binding.layoutCleanStorage.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    AppManager.getAppManager().startActivity(new Intent(context, CleanStorageDetailActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1));
                    if (getDialog() != null) {
                        getDialog().dismiss();
                    }
                }
            });
            binding.layoutIncomeAndExpenses.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    AppManager.getAppManager().startActivity(new Intent(context, IncomeAndExpensesDetailActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1));
                    if (getDialog() != null) {
                        getDialog().dismiss();
                    }
                }
            });
            binding.layoutHealthCare.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    AppManager.getAppManager().startActivity(new Intent(context, AnnualHealthStatusDetailActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1));
                    if (getDialog() != null) {
                        getDialog().dismiss();
                    }
                }
            });
            binding.layoutTourism.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    AppManager.getAppManager().startActivity(new Intent(context, TourismDetailActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1));
                    if (getDialog() != null) {
                        getDialog().dismiss();
                    }
                }
            });
        }
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/FunctionFragment.java
@@ -2,6 +2,8 @@
import android.content.Intent;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.PopupWindow;
@@ -16,6 +18,7 @@
import com.application.zhangshi_app_android.bean.BannerBean;
import com.application.zhangshi_app_android.databinding.FragmentFunctionBinding;
import com.application.zhangshi_app_android.ui.DLBaseFragment;
import com.application.zhangshi_app_android.ui.dialog.TotalAddDialog;
import com.application.zhangshi_app_android.ui.home.HomeFragment;
import com.application.zhangshi_app_android.ui.main.MainActivity;
@@ -31,6 +34,7 @@
public class FunctionFragment extends DLBaseFragment<FragmentFunctionBinding,FunctionFragmentViewModel> {
    private PopupWindow mOperatePopupWindow;
    private PopupWindow mAddPopupWindow;
    private ImageCarouselFragment imageCarouselFragment;
    private VideoCarouselFragment videoCarouselFragment;
@@ -130,6 +134,76 @@
            AppManager.getAppManager().startActivity(ContactsActivity.class);
        });
        binding.fabAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            }
        });
        binding.fabAdd.setOnTouchListener(new View.OnTouchListener() {
            private boolean isDragging = false;
            private int startX, startY;
            private float dX, dY;
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                boolean flag = false;
                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        // 计算手指按下时相对于 FloatingActionButton 的偏移量
                        dX = v.getX() - event.getRawX();
                        dY = v.getY() - event.getRawY();
                        startY = (int) event.getRawY();
                        startX = (int) event.getRawX();
                        isDragging = false;
                        break;
                    case MotionEvent.ACTION_MOVE:
                        // 更新 FloatingActionButton 的位置
                        float newX = event.getRawX() + dX;
                        float newY = event.getRawY() + dY;
                        // 限制移动范围
                        float minX = 0;
                        float maxX = binding.container.getWidth() - v.getWidth();
                        float minY = 0;
                        float maxY = binding.container.getHeight() - v.getHeight();
                        // 确保不超出范围
                        if (newX < minX) {
                            newX = minX;
                        } else if (newX > maxX) {
                            newX = maxX;
                        }
                        if (newY < minY) {
                            newY = minY;
                        } else if (newY > maxY) {
                            newY = maxY;
                        }
                        v.setX(newX);
                        v.setY(newY);
                        if (Math.abs(event.getRawX() - startX) > 10 || Math.abs(event.getRawY() - startY) > 10) {
                            isDragging = true; // 如果移动距离大于阈值,认为是拖动
                        }else {
                            isDragging = false;
                        }
                        flag = true;
                        break;
                    case MotionEvent.ACTION_UP:
                        if (!isDragging) {
                            // 如果没有拖动,认为是点击事件
                            new TotalAddDialog.Builder(getContext()).show();
                        }
                        break;
                    default:
                        break;
                }
                return flag;
            }
        });
        binding.ivOperateSelect.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
@@ -213,5 +287,6 @@
    protected boolean isStatusBarImmersionEnabled() {
        return true;
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/GrowthExperienceActivityViewModel.java
@@ -6,8 +6,11 @@
import androidx.lifecycle.MutableLiveData;
import com.android.app_base.http.ResultData;
import com.android.app_base.manager.UserManager;
import com.android.app_base.utils.RxUtils;
import com.android.app_base.base.viewmodel.BaseViewModel;
import com.android.app_base.utils.rxbus.MessageEvent;
import com.android.app_base.utils.rxbus.RxBus;
import com.application.zhangshi_app_android.bean.GrowthExperienceAbroadConditionBean;
import com.application.zhangshi_app_android.bean.GrowthExperienceAutobiographyBean;
import com.application.zhangshi_app_android.bean.GrowthExperienceBean;
@@ -96,7 +99,13 @@
                    @Override
                    public void onNext(ResultData<GrowthExperienceInformationBean> data) {
                        if (data.getCode() == CODE_SUCCESS){
                            infoLiveData.postValue(data.getData());
                            GrowthExperienceInformationBean informationBean = data.getData();
                            infoLiveData.postValue(informationBean);
                            if(informationBean != null){
                                UserManager.getInstance().setUserName(informationBean.getNickName());
                                UserManager.getInstance().setUserAvatar(informationBean.getImg());
                                RxBus.getInstance().post(new MessageEvent(MessageEvent.EVENT_UPDATE_USER_INFO,informationBean));
                            }
                        }else {
                            messageLiveData.postValue(data.getMsg());
                        }
app/src/main/java/com/application/zhangshi_app_android/ui/function/PropertyActivity.java
@@ -16,7 +16,12 @@
import com.application.zhangshi_app_android.databinding.ActivityPropertyBinding;
import com.application.zhangshi_app_android.ui.DLBaseActivity;
import com.github.gzuliyujiang.wheelpicker.DatePicker;
import com.github.gzuliyujiang.wheelpicker.OptionPicker;
import com.github.gzuliyujiang.wheelpicker.contract.OnDatePickedListener;
import com.github.gzuliyujiang.wheelpicker.contract.OnOptionPickedListener;
import java.util.ArrayList;
import java.util.List;
/**
 * @author Ljj
@@ -200,6 +205,34 @@
            binding.etStartTime.setText("");
            binding.etEndTime.setText("");
        });
        binding.etIsChange.setOnClickListener(v -> {
            List<String> list = new ArrayList<>();
            list.add("变更");
            list.add("注销");
            OptionPicker picker = getOptionPicker(list);
            picker.setTitle("变更或注销");
            picker.setOnOptionPickedListener(new OnOptionPickedListener() {
                @Override
                public void onOptionPicked(int position, Object item) {
                    binding.etIsChange.setText(item.toString());
                }
            });
            picker.show();
        });
        binding.etIsLogout.setOnClickListener(v -> {
            List<String> list = new ArrayList<>();
            list.add("是");
            list.add("否");
            OptionPicker picker = getOptionPicker(list);
            picker.setTitle("是否注销");
            picker.setOnOptionPickedListener(new OnOptionPickedListener() {
                @Override
                public void onOptionPicked(int position, Object item) {
                    binding.etIsLogout.setText(item.toString());
                }
            });
            picker.show();
        });
    }
    @Override
    public boolean dispatchTouchEvent(MotionEvent event) {
app/src/main/java/com/application/zhangshi_app_android/ui/home/HomeFragment.java
@@ -1,43 +1,26 @@
package com.application.zhangshi_app_android.ui.home;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.annotation.SuppressLint;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.ScaleAnimation;
import android.widget.PopupWindow;
import android.widget.TextView;
import androidx.constraintlayout.utils.widget.ImageFilterView;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.Observer;
import com.android.app_base.base.view.BaseFragment;
import com.android.app_base.manager.AppManager;
import com.android.app_base.utils.GlideUtil;
import com.android.app_base.utils.ScreenSizeUtils;
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.HomeMemberAdapter;
import com.application.zhangshi_app_android.bean.HomeMemberBean;
import com.application.zhangshi_app_android.bean.HomeRootBean;
import com.application.zhangshi_app_android.databinding.FragmentHomeBinding;
import com.application.zhangshi_app_android.databinding.PopBasicInformationBinding;
import com.application.zhangshi_app_android.databinding.PopBasicInformationDoubleBinding;
import com.application.zhangshi_app_android.databinding.PopBasicInformationSingleBinding;
import com.application.zhangshi_app_android.ui.DLBaseFragment;
import com.hjq.bar.TitleBar;
import com.application.zhangshi_app_android.widget.HomeMindMapLayout;
import java.util.ArrayList;
import java.util.List;
/**
@@ -47,18 +30,6 @@
 */
public class HomeFragment extends DLBaseFragment<FragmentHomeBinding,HomeFragmentViewModel> {
    private PopupWindow mOperatePopupWindow;
    private ViewOperator firstViewOperator1;//第一代
    private ViewOperator firstViewOperator2;//第一代
    private List<ViewOperator> secondSelfList;//第二代四个分支
    private List<ViewOperator> secondSpouseList;//第二代四个分支的配偶
    private List<List<ViewOperator>> thirdSelfListList;//第三代四个分支的列表
    private List<List<ViewOperator>> fourthSelfListList;//第四代四个分支的列表
    public HomeFragment() {
    }
@@ -91,180 +62,48 @@
        binding.ivOperate.setOnClickListener(v -> {
            mOperatePopupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(getSelfActivity(),120) +binding.ivOperate.getWidth(),0);
        });
        mOperatePopupWindow.getContentView().findViewById(R.id.tv_first).setOnClickListener(v -> {
            binding.ivTreeViewDiff.setBackgroundResource(R.drawable.bg_home_root_net_detail_first);
            viewModel.setIndexLiveData(0);
        });
        mOperatePopupWindow.getContentView().findViewById(R.id.tv_second).setOnClickListener(v -> {
            binding.ivTreeViewDiff.setBackgroundResource(R.drawable.bg_home_root_net_detail_second);
            viewModel.setIndexLiveData(1);
        });
        mOperatePopupWindow.getContentView().findViewById(R.id.tv_third).setOnClickListener(v -> {
            binding.ivTreeViewDiff.setBackgroundResource(R.drawable.bg_home_root_net_detail_third);
            viewModel.setIndexLiveData(2);
        });
        mOperatePopupWindow.getContentView().findViewById(R.id.tv_all).setOnClickListener(v -> {
            binding.ivTreeViewDiff.setBackgroundResource(R.drawable.bg_home_root_net_detail);
            viewModel.setIndexLiveData(3);
        });
        mOperatePopupWindow.getContentView().findViewById(R.id.tv_family).setOnClickListener(v -> {
            AppManager.getAppManager().startActivity(GenealogyActivity.class);
            mOperatePopupWindow.dismiss();
        });
        mOperatePopupWindow.getContentView().findViewById(R.id.tv_relation).setOnClickListener(v -> {
            AppManager.getAppManager().startActivity(HomeMindMapActivity.class);
            mOperatePopupWindow.dismiss();
        binding.scrollHomeMindMapLayout.setOnItemClickListener(new HomeMindMapLayout.OnItemClickListener() {
            @Override
            public void onItemClick(View view, HomeRootBean bean) {
                View contentView;
                if (bean.getSpouse()!=null) {
                    bean.getSpouse().setSpouse(bean);
                    PopBasicInformationDoubleBinding binding= DataBindingUtil.inflate(getLayoutInflater(),R.layout.pop_basic_information_double,null,false);
                    binding.setSelfBean(bean);
                    binding.setSpouseBean(bean.getSpouse());
                    contentView = binding.getRoot();
                }else {
                    PopBasicInformationSingleBinding binding = DataBindingUtil.inflate(getLayoutInflater(),R.layout.pop_basic_information_single,null,false);
                    binding.setSelfBean(bean);
                    contentView = binding.getRoot();
                }
                PopupWindow popupWindow = new PopupWindow();
                // 设置布局文件
                popupWindow.setContentView(contentView);
                // 为了避免部分机型不显示,需要重新设置一下宽高
                popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
                popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
                // 设置pop透明效果
                popupWindow.setBackgroundDrawable(new ColorDrawable(0x0000));
                // 设置pop出入动画
                popupWindow.setAnimationStyle(com.android.app_base.R.style.pop_info);
                // 设置pop获取焦点,如果为false点击返回按钮会退出当前Activity,如果pop中有Editor的话,focusable必须要为true
                popupWindow.setFocusable(true);
                // 设置pop可点击,为false点击事件无效,默认为true
                popupWindow.setTouchable(true);
                // 设置点击pop外侧消失,默认为false;在focusable为true时点击外侧始终消失
                popupWindow.setOutsideTouchable(false);
                popupWindow.setHeight(binding.zoomLayout.getHeight());
                popupWindow.setWidth(binding.zoomLayout.getWidth());
                popupWindow.showAsDropDown(binding.titleBar,0,0);
            }
        });
//        final GestureDetector gestureDetector = new GestureDetector(getSelfActivity(), new GestureDetector.SimpleOnGestureListener() {
//            @Override
//            public boolean onDoubleTap(MotionEvent e) {
//                AlphaAnimation alphaAnimation = new AlphaAnimation(0f, 1f);
//                alphaAnimation.setDuration(1000);
//                alphaAnimation.setAnimationListener(new Animation.AnimationListener() {
//                    @Override
//                    public void onAnimationStart(Animation animation) {
//                        binding.scrollView.setVisibility(View.VISIBLE);
//                        binding.scrollView.post(new Runnable() {
//                            @Override
//                            public void run() {
//                                binding.scrollView.scrollTo(binding.scrollView.getChildAt(0).getMeasuredWidth()/2 - ScreenSizeUtils.getScreenWidth(getSelfActivity())/2,0);
//                            }
//                        });
//                    }
//
//                    @Override
//                    public void onAnimationEnd(Animation animation) {
//                    }
//
//                    @Override
//                    public void onAnimationRepeat(Animation animation) {
//
//                    }
//                });
//
//                AlphaAnimation alphaAnimation1 = new AlphaAnimation(1f, 0f);
//                alphaAnimation1.setDuration(1000);
//                alphaAnimation1.setAnimationListener(new Animation.AnimationListener() {
//                    @Override
//                    public void onAnimationStart(Animation animation) {
//                        binding.layoutHomeRootNet.setVisibility(View.VISIBLE);
//                    }
//
//                    @Override
//                    public void onAnimationEnd(Animation animation) {
//                        binding.layoutHomeRootNet.setVisibility(View.GONE);
//                    }
//
//                    @Override
//                    public void onAnimationRepeat(Animation animation) {
//
//                    }
//                });
//
//                float scale = binding.layoutHomeRootNet.getWidth()/ (binding.ivTreeView.getWidth() * 2f / 3f);
//                //缩放动画
//                ScaleAnimation scaleAnimation = new ScaleAnimation(1f, scale, 1f, scale, binding.layoutHomeRootNet.getWidth()/2f, binding.layoutHomeRootNet.getHeight()/2f);
//                scaleAnimation.setDuration(1000);
//                scaleAnimation.setAnimationListener(new Animation.AnimationListener() {
//                    @Override
//                    public void onAnimationStart(Animation animation) {
//                    }
//
//                    @Override
//                    public void onAnimationEnd(Animation animation) {
//                        binding.scrollView.startAnimation(alphaAnimation);
//                        binding.layoutHomeRootNet.startAnimation(alphaAnimation1);
//                    }
//
//                    @Override
//                    public void onAnimationRepeat(Animation animation) {
//
//                    }
//                });
//                binding.layoutHomeRootNet.startAnimation(scaleAnimation);
//
//                return true;
//            }
//        });
//        binding.layoutHomeRootNet.setOnTouchListener(new View.OnTouchListener() {
//            @Override
//            public boolean onTouch(View v, MotionEvent event) {
//                gestureDetector.onTouchEvent(event);
//                return true;
//            }
//        });
        binding.layoutHomeRootNet.setVisibility(View.GONE);
        binding.scrollView.setVisibility(View.VISIBLE);
        firstViewOperator1 = new ViewOperator(binding.tvFirst1,binding.ivFirst1);
        firstViewOperator2 = new ViewOperator(binding.tvFirst2,binding.ivFirst2);
        secondSelfList = new ArrayList<>();
        secondSpouseList = new ArrayList<>();
        secondSelfList.add(new ViewOperator(binding.tvSecond11,binding.ivSecond11));
        secondSpouseList.add(new ViewOperator(binding.tvSecond12,binding.ivSecond12));
        secondSelfList.add(new ViewOperator(binding.tvSecond21,binding.ivSecond21));
        secondSpouseList.add(new ViewOperator(binding.tvSecond22,binding.ivSecond22));
        secondSelfList.add(new ViewOperator(binding.tvSecond31,binding.ivSecond31));
        secondSpouseList.add(new ViewOperator(binding.tvSecond32,binding.ivSecond32));
        secondSelfList.add(new ViewOperator(binding.tvSecond41,binding.ivSecond41));
        secondSpouseList.add(new ViewOperator(binding.tvSecond42,binding.ivSecond42));
        thirdSelfListList = new ArrayList<>();
        List<ViewOperator> thirdSelfList1 = new ArrayList<>();
        thirdSelfList1.add(new ViewOperator(binding.tvThird11,binding.ivThird11));
        thirdSelfList1.add(new ViewOperator(binding.tvThird12,binding.ivThird12));
        thirdSelfList1.add(new ViewOperator(binding.tvThird13,binding.ivThird13));
        thirdSelfList1.add(new ViewOperator(binding.tvThird14,binding.ivThird14));
        thirdSelfListList.add(thirdSelfList1);
        List<ViewOperator> thirdSelfList2 = new ArrayList<>();
        thirdSelfList2.add(new ViewOperator(binding.tvThird21,binding.ivThird21));
        thirdSelfList2.add(new ViewOperator(binding.tvThird22,binding.ivThird22));
        thirdSelfList2.add(new ViewOperator(binding.tvThird23,binding.ivThird23));
        thirdSelfList2.add(new ViewOperator(binding.tvThird24,binding.ivThird24));
        thirdSelfListList.add(thirdSelfList2);
        List<ViewOperator> thirdSelfList3 = new ArrayList<>();
        thirdSelfList3.add(new ViewOperator(binding.tvThird31,binding.ivThird31));
        thirdSelfList3.add(new ViewOperator(binding.tvThird32,binding.ivThird32));
        thirdSelfList3.add(new ViewOperator(binding.tvThird33,binding.ivThird33));
        thirdSelfList3.add(new ViewOperator(binding.tvThird34,binding.ivThird34));
        thirdSelfListList.add(thirdSelfList3);
        List<ViewOperator> thirdSelfList4 = new ArrayList<>();
        thirdSelfList4.add(new ViewOperator(binding.tvThird41,binding.ivThird41));
        thirdSelfList4.add(new ViewOperator(binding.tvThird42,binding.ivThird42));
        thirdSelfListList.add(thirdSelfList4);
        fourthSelfListList = new ArrayList<>();
        List<ViewOperator> fourthSelfList1 = new ArrayList<>();
        fourthSelfList1.add(new ViewOperator(binding.tvFourth11,binding.ivFourth11));
        fourthSelfList1.add(new ViewOperator(binding.tvFourth12,binding.ivFourth12));
        fourthSelfListList.add(fourthSelfList1);
        List<ViewOperator> fourthSelfList2 = new ArrayList<>();
        fourthSelfList2.add(new ViewOperator(binding.tvFourth21,binding.ivFourth21));
        fourthSelfList2.add(new ViewOperator(binding.tvFourth22,binding.ivFourth22));
        fourthSelfList2.add(new ViewOperator(binding.tvFourth23,binding.ivFourth23));
        fourthSelfList2.add(new ViewOperator(binding.tvFourth24,binding.ivFourth24));
        fourthSelfListList.add(fourthSelfList2);
        List<ViewOperator> fourthSelfList3 = new ArrayList<>();
        fourthSelfList3.add(new ViewOperator(binding.tvFourth31,binding.ivFourth31));
        fourthSelfList3.add(new ViewOperator(binding.tvFourth32,binding.ivFourth32));
        fourthSelfList3.add(new ViewOperator(binding.tvFourth33,binding.ivFourth33));
        fourthSelfList3.add(new ViewOperator(binding.tvFourth34,binding.ivFourth34));
        fourthSelfListList.add(fourthSelfList3);
        List<ViewOperator> fourthSelfList4 = new ArrayList<>();
        fourthSelfList4.add(new ViewOperator(binding.tvFourth41,binding.ivFourth41));
        fourthSelfList4.add(new ViewOperator(binding.tvFourth42,binding.ivFourth42));
        fourthSelfList4.add(new ViewOperator(binding.tvFourth43,binding.ivFourth43));
        fourthSelfListList.add(fourthSelfList4);
    }
@@ -276,145 +115,14 @@
    @Override
    protected void initLiveDataObserve() {
        viewModel.getIndexLiveData().observe(this, new Observer<Integer>() {
            @Override
            public void onChanged(Integer integer) {
                firstViewOperator1.setVisibility(View.VISIBLE);
                firstViewOperator2.setVisibility(View.VISIBLE);
                if (integer == 0){
                    for (ViewOperator viewOperator : secondSelfList) {
                        viewOperator.setVisibility(View.GONE);
                    }
                    for (ViewOperator viewOperator : secondSpouseList) {
                        viewOperator.setVisibility(View.GONE);
                    }
                    for (List<ViewOperator> viewOperators : thirdSelfListList) {
                        for (ViewOperator viewOperator : viewOperators) {
                            viewOperator.setVisibility(View.GONE);
                        }
                    }
                    for (List<ViewOperator> viewOperators : fourthSelfListList) {
                        for (ViewOperator viewOperator : viewOperators) {
                            viewOperator.setVisibility(View.GONE);
                        }
                    }
                }else if (integer == 1){
                    for (int i = 0; i < secondSelfList.size(); i++) {
                        if (secondSelfList.get(i).selfBean != null) {
                            secondSelfList.get(i).setVisibility(View.VISIBLE);
                        }else {
                            secondSelfList.get(i).setVisibility(View.GONE);
                        }
                        if (secondSpouseList.get(i).selfBean != null) {
                            secondSpouseList.get(i).setVisibility(View.VISIBLE);
                        }else {
                            secondSpouseList.get(i).setVisibility(View.GONE);
                        }
                    }
                    for (List<ViewOperator> viewOperators : thirdSelfListList) {
                        for (ViewOperator viewOperator : viewOperators) {
                            viewOperator.setVisibility(View.GONE);
                        }
                    }
                    for (List<ViewOperator> viewOperators : fourthSelfListList) {
                        for (ViewOperator viewOperator : viewOperators) {
                            viewOperator.setVisibility(View.GONE);
                        }
                    }
                }else if (integer == 2){
                    for (int i = 0; i < secondSelfList.size(); i++) {
                        if (secondSelfList.get(i).selfBean != null) {
                            secondSelfList.get(i).setVisibility(View.VISIBLE);
                        }else {
                            secondSelfList.get(i).setVisibility(View.GONE);
                        }
                        if (secondSpouseList.get(i).selfBean != null) {
                            secondSpouseList.get(i).setVisibility(View.VISIBLE);
                        }else {
                            secondSpouseList.get(i).setVisibility(View.GONE);
                        }
                    }
                    for (List<ViewOperator> viewOperators : thirdSelfListList) {
                        for (ViewOperator viewOperator : viewOperators) {
                            if (viewOperator.selfBean != null) {
                                viewOperator.setVisibility(View.VISIBLE);
                            }else {
                                viewOperator.setVisibility(View.GONE);
                            }
                        }
                    }
                    for (List<ViewOperator> viewOperators : fourthSelfListList) {
                        for (ViewOperator viewOperator : viewOperators) {
                            viewOperator.setVisibility(View.GONE);
                        }
                    }
                }else if (integer == 3){
                    for (int i = 0; i < secondSelfList.size(); i++) {
                        if (secondSelfList.get(i).selfBean != null) {
                            secondSelfList.get(i).setVisibility(View.VISIBLE);
                        }else {
                            secondSelfList.get(i).setVisibility(View.GONE);
                        }
                        if (secondSpouseList.get(i).selfBean != null) {
                            secondSpouseList.get(i).setVisibility(View.VISIBLE);
                        }else {
                            secondSpouseList.get(i).setVisibility(View.GONE);
                        }
                    }
                    for (List<ViewOperator> viewOperators : thirdSelfListList) {
                        for (ViewOperator viewOperator : viewOperators) {
                            if (viewOperator.selfBean != null) {
                                viewOperator.setVisibility(View.VISIBLE);
                            }else {
                                viewOperator.setVisibility(View.GONE);
                            }
                        }
                    }
                    for (List<ViewOperator> viewOperators : fourthSelfListList) {
                        for (ViewOperator viewOperator : viewOperators) {
                            if (viewOperator.selfBean != null) {
                                viewOperator.setVisibility(View.VISIBLE);
                            }else {
                                viewOperator.setVisibility(View.GONE);
                            }
                        }
                    }
                }
            }
        });
        viewModel.getHomeRootBeanLiveData().observe(this, new Observer<List<HomeRootBean>>() {
            @Override
            public void onChanged(List<HomeRootBean> homeRootBeans) {
                if (homeRootBeans.size() > 0){
                    //填充第一代数据
                    firstViewOperator1.setBean(homeRootBeans.get(0),homeRootBeans.get(0).getSpouse());
                    firstViewOperator2.setBean(homeRootBeans.get(0).getSpouse(),homeRootBeans.get(0));
                    List<HomeRootBean> secondGeneration = homeRootBeans.get(0).getChildList();//第二代人员
                    for (int i = 0; i < Math.min(homeRootBeans.get(0).getChildList().size(),4); i++) {
                        //填充第i分支的第二代数据
                        secondSelfList.get(i).setBean(secondGeneration.get(i),secondGeneration.get(i).getSpouse());
                        secondSpouseList.get(i).setBean(secondGeneration.get(i).getSpouse(),secondGeneration.get(i));
                        List<HomeRootBean> thirdGeneration = secondGeneration.get(i).getChildList();//第i分支的第三代人员
                        List<ViewOperator> thirdList = thirdSelfListList.get(i);//第i分支的第三代对应view
                        List<HomeRootBean> fourthGeneration = new ArrayList<>();//第i分支的第四代人员
                        List<ViewOperator> fourthList = fourthSelfListList.get(i);//第i分支的第四代对应view
                        for (int j = 0; j < Math.min(thirdGeneration.size(),thirdList.size()); j++) {
                            //填充第i分支下的第三代数据
                            thirdList.get(j).setBean(thirdGeneration.get(j),thirdGeneration.get(j).getSpouse());
                            fourthGeneration.addAll(thirdGeneration.get(j).getChildList());//收集第i分支下的全部第四代人员
                if (homeRootBeans == null || homeRootBeans.size() == 0) {
                    return;
                        }
                        for (int j = 0; j < Math.min(fourthGeneration.size(),fourthList.size()); j++) {
                            //填充第i分支下的第四代数据
                            fourthList.get(j).setBean(fourthGeneration.get(j),fourthGeneration.get(j).getSpouse());
                        }
                    }
                }
                binding.scrollHomeMindMapLayout.setRootMember(homeRootBeans.get(0));
            }
        });
    }
@@ -424,79 +132,4 @@
        return true;
    }
    private class ViewOperator{
        private TextView tvIndex;
        private ImageFilterView ivHead;
        private HomeRootBean selfBean;
        private HomeRootBean spouseBean;
        public ViewOperator(TextView tvIndex, ImageFilterView ivHead) {
            this.tvIndex = tvIndex;
            this.ivHead = ivHead;
        }
        public void setVisibility(int visibility){
            tvIndex.setVisibility(visibility);
            ivHead.setVisibility(visibility);
        }
        public void setBean(HomeRootBean selfBean, HomeRootBean spouseBean) {
            this.selfBean = selfBean;
            this.spouseBean = spouseBean;
            if (selfBean == null){
                tvIndex.setVisibility(View.GONE);
                ivHead.setVisibility(View.GONE);
                return;
            }else {
                tvIndex.setVisibility(View.VISIBLE);
                ivHead.setVisibility(View.VISIBLE);
            }
            GlideUtil.loadImage(selfBean.getImg(), ivHead);
            View.OnClickListener clickListener = new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    PopBasicInformationBinding mBinding= DataBindingUtil.inflate(getLayoutInflater(),R.layout.pop_basic_information,null,false);
                    PopupWindow mPopupWindow = initPopUpWindow(mBinding.getRoot());
                    mPopupWindow.setHeight(binding.layoutParent.getHeight());
                    mPopupWindow.setWidth(binding.layoutParent.getWidth());
                    mBinding.setSelfBean(selfBean);
                    mBinding.setSpouseBean(spouseBean);
                    mPopupWindow.showAsDropDown(binding.titleBar,0,0);
                }
            };
            ivHead.setOnClickListener(clickListener);
            tvIndex.setOnClickListener(clickListener);
        }
        public TextView getTvIndex() {
            return tvIndex;
        }
        public void setTvIndex(TextView tvIndex) {
            this.tvIndex = tvIndex;
        }
        public ImageFilterView getIvHead() {
            return ivHead;
        }
        public void setIvHead(ImageFilterView ivHead) {
            this.ivHead = ivHead;
        }
        public HomeRootBean getSelfBean() {
            return selfBean;
        }
        public void setSelfBean(HomeRootBean selfBean) {
            this.selfBean = selfBean;
        }
        public HomeRootBean getSpouseBean() {
            return spouseBean;
        }
        public void setSpouseBean(HomeRootBean spouseBean) {
            this.spouseBean = spouseBean;
        }
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/home/HomeFragmentViewModel.java
@@ -28,7 +28,6 @@
 * @desc 首页 Fragment的 ViewModel
 */
public class HomeFragmentViewModel extends BaseViewModel<DataRepository> {
    private MutableLiveData<Integer> indexLiveData;//显示代数(0,1,2,3对应第一代,第二代,第三代,第四代)
    private MutableLiveData<List<HomeRootBean>> homeRootBeanLiveData;//家根网成员列表
@@ -43,7 +42,7 @@
    public void getHomeRootBeanList() {
        model.getHomeRoot("4")
        model.getHomeRoot("1000")
                .compose(RxUtils.schedulersTransformer())
                .doFinally(new Action() {
                    @Override
@@ -79,24 +78,6 @@
    }
    public void setIndexLiveData(MutableLiveData<Integer> indexLiveData) {
        this.indexLiveData = indexLiveData;
    }
    public MutableLiveData<Integer> getIndexLiveData() {
        if (indexLiveData == null) {
            indexLiveData = new MutableLiveData<>();
            indexLiveData.setValue(3);
        }
        return indexLiveData;
    }
    public void setIndexLiveData(int index) {
        if (indexLiveData == null) {
            indexLiveData = new MutableLiveData<>();
        }
        indexLiveData.setValue(index);
    }
    public MutableLiveData<List<HomeRootBean>> getHomeRootBeanLiveData() {
        if (homeRootBeanLiveData == null) {
app/src/main/java/com/application/zhangshi_app_android/ui/main/MainActivity.java
@@ -141,7 +141,7 @@
            public void onChanged(GrowthExperienceInformationBean informationBean) {
                if(informationBean != null){
                    UserManager.getInstance().setUserName(informationBean.getNickName());
                    UserManager.getInstance().setUserAvatar(informationBean.getUrl());
                    UserManager.getInstance().setUserAvatar(informationBean.getImg());
                    RxBus.getInstance().post(new MessageEvent(MessageEvent.EVENT_UPDATE_USER_INFO,informationBean));
                }
app/src/main/java/com/application/zhangshi_app_android/ui/personal_center/PersonalCenterFragment.java
@@ -1,28 +1,63 @@
package com.application.zhangshi_app_android.ui.personal_center;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.PopupWindow;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import com.android.app_base.base.dialog.BaseDialog;
import com.android.app_base.base.dialog.UIDialog;
import com.android.app_base.base.dialog.WaitDialog;
import com.android.app_base.base.view.BaseFragment;
import com.android.app_base.manager.AppManager;
import com.android.app_base.manager.UserManager;
import com.android.app_base.utils.GlideEngine;
import com.android.app_base.utils.ScreenSizeUtils;
import com.android.app_base.utils.Utils;
import com.android.app_base.utils.rxbus.MessageEvent;
import com.android.app_base.utils.rxbus.RxBus;
import com.application.zhangshi_app_android.BR;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.bean.AnnualHealthStatusBean;
import com.application.zhangshi_app_android.bean.GrowthExperienceInformationBean;
import com.application.zhangshi_app_android.databinding.FragmentPersonalCenterBinding;
import com.application.zhangshi_app_android.ui.DLBaseFragment;
import com.application.zhangshi_app_android.ui.dialog.PetOwnerInfoDialog;
import com.application.zhangshi_app_android.ui.function.PetMemoActivity;
import com.application.zhangshi_app_android.ui.login.LoginActivity;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.target.CustomTarget;
import com.bumptech.glide.request.transition.Transition;
import com.luck.picture.lib.basic.PictureSelector;
import com.luck.picture.lib.config.SelectMimeType;
import com.luck.picture.lib.engine.CropFileEngine;
import com.luck.picture.lib.entity.LocalMedia;
import com.luck.picture.lib.interfaces.OnResultCallbackListener;
import com.luck.picture.lib.style.PictureSelectorStyle;
import com.luck.picture.lib.style.SelectMainStyle;
import com.luck.picture.lib.style.TitleBarStyle;
import com.luck.picture.lib.utils.PictureFileUtils;
import com.luck.picture.lib.utils.StyleUtils;
import com.yalantis.ucrop.UCrop;
import com.yalantis.ucrop.UCropImageEngine;
import com.yalantis.ucrop.model.AspectRatio;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import io.reactivex.Observer;
import io.reactivex.functions.Consumer;
@@ -34,6 +69,7 @@
 */
public class PersonalCenterFragment extends DLBaseFragment<FragmentPersonalCenterBinding,PersonalCenterFragmentViewModel> {
    private PopupWindow popupWindow;
    private BaseDialog mWaitDialog;
    public PersonalCenterFragment() {
    }
@@ -92,6 +128,36 @@
            }
        });
        binding.ivHead.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                PictureSelector.create(getSelfActivity())
                        .openGallery(SelectMimeType.ofImage())
                        .setImageEngine(GlideEngine.createGlideEngine())
                        .setCropEngine(new ImageFileCropEngine())// 设置裁剪引擎
                        .isMaxSelectEnabledMask(true)// 达到最大选择数是否开启禁选蒙层
                        .setMaxSelectNum(1)
                        .forResult(new OnResultCallbackListener<LocalMedia>() {
                            @Override
                            public void onResult(ArrayList<LocalMedia> result) {
                                if (result.size() == 0) return;
                                for (LocalMedia media : result) {
                                    if (media.isCut()){
                                        viewModel.updateInfo(media.getCutPath());
                                    }else {
                                        viewModel.updateInfo(media.getRealPath());
                                    }
                                }
                            }
                            @Override
                            public void onCancel() {
                            }
                        });
            }
        });
    }
    @Override
@@ -128,4 +194,127 @@
    protected boolean isStatusBarImmersionEnabled() {
        return true;
    }
    @Override
    protected void dialogLoading() {
        if (mWaitDialog == null) {
            mWaitDialog = new WaitDialog.Builder(getSelfActivity())
                    // 消息文本可以不用填写
                    .setMessage("正在上传头像")
                    .create();
        }
        if (!mWaitDialog.isShowing()) {
            mWaitDialog.show();
        }
    }
    @Override
    protected void dialogDismiss() {
        if (mWaitDialog != null && mWaitDialog.isShowing()) {
            mWaitDialog.dismiss();
            mWaitDialog = null;
        }
    }
    /**
     * 自定义裁剪
     */
    private class ImageFileCropEngine implements CropFileEngine {
        @Override
        public void onStartCrop(Fragment fragment, Uri srcUri, Uri destinationUri, ArrayList<String> dataSource, int requestCode) {
            UCrop.Options options = buildOptions();
            UCrop uCrop = UCrop.of(srcUri, destinationUri, dataSource);
            uCrop.withOptions(options);
            uCrop.setImageEngine(new UCropImageEngine() {
                @Override
                public void loadImage(Context context, String url, ImageView imageView) {
                    Glide.with(context).load(url).override(180, 180).into(imageView);
                }
                @Override
                public void loadImage(Context context, Uri url, int maxWidth, int maxHeight, OnCallbackListener<Bitmap> call) {
                    Glide.with(context).asBitmap().load(url).override(maxWidth, maxHeight).into(new CustomTarget<Bitmap>() {
                        @Override
                        public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
                            if (call != null) {
                                call.onCall(resource);
                            }
                        }
                        @Override
                        public void onLoadCleared(@Nullable Drawable placeholder) {
                            if (call != null) {
                                call.onCall(null);
                            }
                        }
                    });
                }
            });
            uCrop.start(fragment.requireActivity(), fragment, requestCode);
        }
    }
    /**
     * 配制UCrop,可根据需求自我扩展
     *
     * @return
     */
    private UCrop.Options buildOptions() {
        PictureSelectorStyle selectorStyle = new PictureSelectorStyle();
        UCrop.Options options = new UCrop.Options();
        options.setHideBottomControls(true);//是否显示底部裁剪菜单栏
        options.setFreeStyleCropEnabled(false);//裁剪框or图片拖动
        options.setShowCropFrame(true);//是否显示裁剪边框
        options.setShowCropGrid(true);//是否显示裁剪网格线
        options.setCircleDimmedLayer(false);//是否圆形裁剪
        options.withAspectRatio(1, 1);//裁剪比例
        options.setAspectRatioOptions(3,
                new AspectRatio("16:9", 16, 9),
                new AspectRatio("3:2", 3, 2),
                new AspectRatio("4:3", 4, 3),
                new AspectRatio("1:1", 1, 1));//自选裁剪比例,受setHideBottomControls影响可见
        options.setCropOutputPathDir(getSandboxPath());//裁剪输出路径
        options.isCropDragSmoothToCenter(false);//裁剪拖动是否自动居中
        options.isForbidSkipMultipleCrop(true);//是否多图裁剪时禁止跳过
        options.setMaxScaleMultiplier(100);//设置最大缩放比例
        if (selectorStyle != null && selectorStyle.getSelectMainStyle().getStatusBarColor() != 0) {
            SelectMainStyle mainStyle = selectorStyle.getSelectMainStyle();
            boolean isDarkStatusBarBlack = mainStyle.isDarkStatusBarBlack();
            int statusBarColor = mainStyle.getStatusBarColor();
            options.isDarkStatusBarBlack(isDarkStatusBarBlack);
            if (StyleUtils.checkStyleValidity(statusBarColor)) {
                options.setStatusBarColor(statusBarColor);
                options.setToolbarColor(statusBarColor);
            } else {
                options.setStatusBarColor(ContextCompat.getColor(getSelfActivity(), com.luck.picture.lib.R.color.ps_color_grey));
                options.setToolbarColor(ContextCompat.getColor(getSelfActivity(), com.luck.picture.lib.R.color.ps_color_grey));
            }
            TitleBarStyle titleBarStyle = selectorStyle.getTitleBarStyle();
            if (StyleUtils.checkStyleValidity(titleBarStyle.getTitleTextColor())) {
                options.setToolbarWidgetColor(titleBarStyle.getTitleTextColor());
            } else {
                options.setToolbarWidgetColor(ContextCompat.getColor(getSelfActivity(), com.luck.picture.lib.R.color.ps_color_white));
            }
        } else {
            options.setStatusBarColor(ContextCompat.getColor(getSelfActivity(), com.luck.picture.lib.R.color.ps_color_grey));
            options.setToolbarColor(ContextCompat.getColor(getSelfActivity(), com.luck.picture.lib.R.color.ps_color_grey));
            options.setToolbarWidgetColor(ContextCompat.getColor(getSelfActivity(), com.luck.picture.lib.R.color.ps_color_white));
        }
        return options;
    }
    /**
     * 创建自定义输出目录
     *
     * @return
     */
    private String getSandboxPath() {
        File externalFilesDir = getSelfActivity().getExternalFilesDir("");
        File customFile = new File(externalFilesDir.getAbsolutePath(), "Sandbox");
        if (!customFile.exists()) {
            customFile.mkdirs();
        }
        return customFile.getAbsolutePath() + File.separator;
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/personal_center/PersonalCenterFragmentViewModel.java
@@ -7,14 +7,29 @@
import androidx.annotation.NonNull;
import androidx.lifecycle.MutableLiveData;
import com.android.app_base.base.StateViewEnum;
import com.android.app_base.base.viewmodel.BaseViewModel;
import com.android.app_base.http.ResultData;
import com.android.app_base.manager.UserManager;
import com.android.app_base.utils.RxUtils;
import com.android.app_base.utils.rxbus.MessageEvent;
import com.android.app_base.utils.rxbus.RxBus;
import com.application.zhangshi_app_android.bean.BannerBean;
import com.application.zhangshi_app_android.bean.GrowthExperienceInformationBean;
import com.application.zhangshi_app_android.bean.UploadFileResponseBean;
import com.application.zhangshi_app_android.data.DataRepository;
import java.io.File;
import io.reactivex.ObservableSource;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Action;
import io.reactivex.functions.Consumer;
import io.reactivex.functions.Function;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
/**
 * @author Ljj
@@ -48,6 +63,12 @@
                    public void onNext(ResultData<GrowthExperienceInformationBean> data) {
                        if (data.getCode() == CODE_SUCCESS){
                            getInfoLiveData().postValue(data.getData());
                            GrowthExperienceInformationBean informationBean = data.getData();
                            if(informationBean != null){
                                UserManager.getInstance().setUserName(informationBean.getNickName());
                                UserManager.getInstance().setUserAvatar(informationBean.getImg());
                                RxBus.getInstance().post(new MessageEvent(MessageEvent.EVENT_UPDATE_USER_INFO,informationBean));
                            }
                        }else {
                            messageLiveData.postValue(data.getMsg());
                        }
@@ -66,6 +87,72 @@
                });
    }
    /**
     * 修改个人信息(头像)
     */
    public void updateInfo(String realPath) {
        File file = new File(realPath);
        RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
        MultipartBody.Part body = MultipartBody.Part.createFormData("uploadFile", file.getName(), requestBody);
        model.uploadFile(body)
                .flatMap(new Function<ResultData<UploadFileResponseBean>, ObservableSource<ResultData<String>>>() {
                    @Override
                    public ObservableSource<ResultData<String>> apply(ResultData<UploadFileResponseBean> resultData) throws Exception {
                        GrowthExperienceInformationBean bean = getInfoLiveData().getValue();
                        if (bean == null){
                            bean = new GrowthExperienceInformationBean();
                        }
                        bean.setImg(resultData.getData().getUrl());
                        infoLiveData.postValue(bean);
                        return model.updateGrowthExperienceInformation(bean);
                    }
                })
                .compose(RxUtils.schedulersTransformer())
                .doOnSubscribe(new Consumer<Disposable>() {
                    @Override
                    public void accept(Disposable disposable) throws Exception {
                        changeStateView(StateViewEnum.DIALOG_LOADING);
                    }
                })
                .doFinally(new Action() {
                    @Override
                    public void run() throws Exception {
                        changeStateView(StateViewEnum.DIALOG_DISMISS);
                    }
                })
                .subscribe(new Observer<ResultData<String>>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        addSubscribe(d);
                    }
                    @Override
                    public void onNext(ResultData<String> data) {
                        if (data.getCode() == CODE_SUCCESS){
                            messageLiveData.postValue("头像已上传");
                            GrowthExperienceInformationBean informationBean = getInfoLiveData().getValue();
                            if(informationBean != null){
                                UserManager.getInstance().setUserName(informationBean.getNickName());
                                UserManager.getInstance().setUserAvatar(informationBean.getUrl());
                                RxBus.getInstance().post(new MessageEvent(MessageEvent.EVENT_UPDATE_USER_INFO,informationBean));
                            }
                        }else {
                            messageLiveData.postValue(data.getMsg());
                        }
                    }
                    @Override
                    public void onError(Throwable e) {
                        messageLiveData.postValue(e.getMessage());
                    }
                    @Override
                    public void onComplete() {
                    }
                });
    }
    public MutableLiveData<GrowthExperienceInformationBean> getInfoLiveData() {
        if (infoLiveData == null){
app/src/main/java/com/application/zhangshi_app_android/widget/DoubleNode.java
@@ -45,8 +45,8 @@
    }
    private void initView() {
        memberItemView = createItemView(member);
        spouseView = createItemView(member.getSpouse());
        memberItemView = createItemView(member, true);
        spouseView = createItemView(member.getSpouse(),false);
        expandIconView = createExpandIconView();
        viewList.add(memberItemView);
        viewList.add(spouseView);
app/src/main/java/com/application/zhangshi_app_android/widget/HomeMindMapLayout.java
@@ -34,16 +34,10 @@
    private Paint linePaint;
    private HomeRootBean rootMember;// 根节点成员
    private Node rootNode;// 根节点
    private Map<HomeRootBean, View> viewMap = new HashMap<>();// 存放所有节点的view,记录节点的view是否已被addView
    private int width, height;// 当前布局的宽高
    private int minHeight, minWidth;// 当前布局的最小宽高
    private int padding = 100;//内容矩形 与 FrameLayout矩形 的padding
    private static final int spouseMargin = ScreenSizeUtils.dip2px(15);// 配偶两个view之间的间隔
    private final int verticalMargin = ScreenSizeUtils.dip2px(20);//    //节点竖直方向间距
    private static final int pathLength = ScreenSizeUtils.dip2px(20);// 线条长度
    private OnItemClickListener onItemClickListener;// 点击事件
    public HomeMindMapLayout(@NonNull Context context) {
        this(context, null);
    }
@@ -78,8 +72,6 @@
    private void setRootMemberReal(HomeRootBean root) {
        this.rootMember = root;
        // 清空viewMap
        viewMap.clear();
        if (rootMember != null) { // 绘制根节点,在竖直方向上居中
            if (rootMember.getSpouse() == null){
                rootNode = new SimpleNode(getContext(),rootMember);
@@ -90,6 +82,15 @@
            //把所有节点的view添加到viewGroup中
            addNodeView(rootNode);
            requestLayout();
            if (onItemClickListener != null){
                rootNode.setOnItemClickListener(onItemClickListener);
            }
        }
    }
    public void setOnItemClickListener(OnItemClickListener listener){
        this.onItemClickListener = listener;
        if (rootNode != null){
            rootNode.setOnItemClickListener(onItemClickListener);
        }
    }
@@ -126,7 +127,6 @@
            }
        }
        setMeasuredDimension(Math.max(minWidth,width),Math.max(minHeight,height));
    }
    @Override
@@ -167,57 +167,13 @@
    }
    private ImageView createExpandIconView() {
        ImageView expandView = new ImageView(getContext());
        FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(pathLength,pathLength);
        expandView.setLayoutParams(params);
        int widthMeasureSpec = MeasureSpec.makeMeasureSpec(pathLength, MeasureSpec.EXACTLY);
        int heightMeasureSpec = MeasureSpec.makeMeasureSpec(pathLength, MeasureSpec.EXACTLY);
        expandView.measure(widthMeasureSpec,heightMeasureSpec);
        return expandView;
    }
    private View createItemView(HomeRootBean member) {
        // 使用布局填充器加载节点布局
        LayoutInflater inflater = LayoutInflater.from(getContext());
        View familyMemberView = inflater.inflate(R.layout.item_family_member, null, false);
        familyMemberView.measure(MeasureSpec.makeMeasureSpec((1 << 30) - 1, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec((1 << 30) - 1, MeasureSpec.AT_MOST));
        // 获取测量后的宽高
        int width = familyMemberView.getMeasuredWidth();
        int height = familyMemberView.getMeasuredHeight();
        // 添加到父布局前再次测量
        familyMemberView.measure(
                View.MeasureSpec.makeMeasureSpec(width, View.MeasureSpec.EXACTLY),
                View.MeasureSpec.makeMeasureSpec(height, View.MeasureSpec.EXACTLY)
        );
        if (member == null) {
            return familyMemberView;
        }
        // 获取布局中的组件
        TextView tv_generation = familyMemberView.findViewById(R.id.tv_generation);
        ImageFilterView iv_avatar = familyMemberView.findViewById(R.id.iv_avatar);
        TextView tv_name = familyMemberView.findViewById(R.id.tv_name);
        // 设置节点内容
        tv_generation.setText(String.valueOf(member.getIdentity()));
        if (member.getImg() != null) {
            GlideUtil.loadImage(member.getImg(), iv_avatar);
        }
        tv_name.setText(member.getNickName());
        return familyMemberView;
    }
    public void setMinSize(int minWidth, int minHeight) {
        this.minWidth = minWidth;
        this.minHeight = minHeight;
    }
    public interface OnItemClickListener{
        void onItemClick(View view,HomeRootBean member);
    }
}
app/src/main/java/com/application/zhangshi_app_android/widget/Node.java
@@ -1,27 +1,23 @@
package com.application.zhangshi_app_android.widget;
import android.content.Context;
import android.graphics.Color;
import android.graphics.Path;
import android.graphics.drawable.ColorDrawable;
import android.view.Gravity;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.PopupWindow;
import android.widget.TextView;
import androidx.constraintlayout.utils.widget.ImageFilterView;
import androidx.databinding.DataBindingUtil;
import com.android.app_base.manager.AppManager;
import com.android.app_base.utils.GlideUtil;
import com.android.app_base.utils.ScreenSizeUtils;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.bean.HomeRootBean;
import com.application.zhangshi_app_android.databinding.PopBasicInformationBinding;
import com.otaliastudios.zoom.ZoomLayout;
import java.util.ArrayList;
import java.util.LinkedList;
@@ -38,7 +34,7 @@
    protected HomeRootBean member;//成员
    protected Node parent;//父节点
    protected final List<Node> children = new ArrayList<>(); //子节点
    protected HomeMindMapLayout.OnItemClickListener onItemClickListener;
    protected static final int pathLength = ScreenSizeUtils.dip2px(20);// 连线的一般长度
    protected static final int  cornerRadius = ScreenSizeUtils.dip2px(5); // 连线拐角 圆角半径
@@ -69,7 +65,6 @@
        if (member != null) {
            // 递归创建子节点
            if (member.getChildList() != null && member.getChildList().size() > 0) {
                // 所有可见的子节点需要的宽高总和
                for (HomeRootBean child : member.getChildList()) {
                    // 根据是否有配偶创建不同的节点
                    if (child != null) {
@@ -196,7 +191,13 @@
    protected abstract void setViewPosition(int x, int centerY);
    protected abstract void setForkYList(List<Integer> yList);
    protected View createItemView(HomeRootBean bean) {
    /**
     *  创建节点item视图
     * @param bean 节点数据
     * @param isFamily 是否是本家成员
     * @return 节点item视图
     */
    protected View createItemView(HomeRootBean bean,boolean isFamily){
        // 使用布局填充器加载节点布局
        LayoutInflater inflater = LayoutInflater.from(context);
        View familyMemberView = inflater.inflate(R.layout.item_family_member, null, false);
@@ -215,6 +216,10 @@
        ImageFilterView iv_avatar = familyMemberView.findViewById(R.id.iv_avatar);
        TextView tv_name = familyMemberView.findViewById(R.id.tv_name);
        if (!isFamily){
            tv_name.setTextColor(Color.parseColor("#FF8296C5"));
            tv_name.setTypeface(Typeface.DEFAULT);
        }
        // 设置节点内容
        tv_generation.setText(String.valueOf(bean.getIdentity()));
        if (bean.getImg() != null) {
@@ -225,30 +230,9 @@
        familyMemberView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                PopBasicInformationBinding mBinding= DataBindingUtil.inflate(inflater,R.layout.pop_basic_information,null,false);
                PopupWindow popupWindow = new PopupWindow();
                // 设置布局文件
                popupWindow.setContentView(mBinding.getRoot());
                // 为了避免部分机型不显示,需要重新设置一下宽高
                popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
                popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
                // 设置pop透明效果
                popupWindow.setBackgroundDrawable(new ColorDrawable(0x0000));
                // 设置pop出入动画
                popupWindow.setAnimationStyle(com.android.app_base.R.style.pop_operate);
                // 设置pop获取焦点,如果为false点击返回按钮会退出当前Activity,如果pop中有Editor的话,focusable必须要为true
                popupWindow.setFocusable(true);
                // 设置pop可点击,为false点击事件无效,默认为true
                popupWindow.setTouchable(true);
                // 设置点击pop外侧消失,默认为false;在focusable为true时点击外侧始终消失
                popupWindow.setOutsideTouchable(false);
                mBinding.setSelfBean(bean);
                mBinding.setSpouseBean(bean.getSpouse());
                ZoomLayout zoomLayout = (ZoomLayout) familyMemberView.getParent().getParent();
                popupWindow.setHeight(zoomLayout.getHeight());
                popupWindow.setWidth(zoomLayout.getWidth());
                popupWindow.showAtLocation((View) familyMemberView.getParent().getParent(), Gravity.BOTTOM,0,0);
                if (onItemClickListener != null){
                    onItemClickListener.onItemClick(familyMemberView,bean);
                }
            }
        });
        return familyMemberView;
@@ -485,12 +469,12 @@
    // 获取 每个 itemView 的宽度
    public int getItemViewWidth(){
        View itemView =  createItemView(null);
        View itemView =  createItemView(null,false);
        return itemView.getMeasuredWidth();
    }
    // 获取 每个 itemView 的高度
    public int getItemViewHeight(){
        View itemView =  createItemView(null);
        View itemView =  createItemView(null,false);
        return itemView.getMeasuredHeight();
    }
    //获取展开按钮的宽度
@@ -503,4 +487,12 @@
    public int getViewWidth(){
        return viewBottom - viewTop;
    }
    public void setOnItemClickListener(HomeMindMapLayout.OnItemClickListener onItemClickListener) {
        this.onItemClickListener = onItemClickListener;
        //所有的子节点也设置
        for (Node child : children) {
            child.setOnItemClickListener(onItemClickListener);
        }
    }
}
app/src/main/java/com/application/zhangshi_app_android/widget/SimpleNode.java
@@ -42,7 +42,7 @@
    }
    private void initView() {
        memberItemView = createItemView(member);
        memberItemView = createItemView(member,true);
        expandIconView = createExpandIconView();
        viewList.add(memberItemView);
        viewList.add(expandIconView);
app/src/main/res/drawable-xhdpi/bg_home_root.png
app/src/main/res/drawable-xhdpi/ic_camera.png
app/src/main/res/drawable-xxhdpi/bg_home_root.png
app/src/main/res/drawable-xxhdpi/ic_camera.png
app/src/main/res/layout/activity_health_care.xml
@@ -1764,6 +1764,7 @@
                    android:layout_marginTop="10dp"
                    app:cardCornerRadius="10dp"
                    app:cardElevation="2dp"
                    app:cardBackgroundColor="@color/white"
                    tools:layout_height="wrap_content"
                    >
                    <LinearLayout
@@ -2605,6 +2606,7 @@
                    android:layout_marginTop="10dp"
                    app:cardCornerRadius="10dp"
                    app:cardElevation="2dp"
                    app:cardBackgroundColor="@color/white"
                    tools:layout_height="wrap_content"
                    >
                    <LinearLayout
app/src/main/res/layout/activity_home_devices_detail.xml
@@ -20,7 +20,7 @@
            android:id="@+id/titleBar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:title="@{viewModel.beanLiveData.id!=0?viewModel.beanLiveData.name:`添加设备`}"
            app:title="@{viewModel.beanLiveData.id!=0?viewModel.beanLiveData.name:`添加家庭设备`}"
            app:titleGravity="left"
            >
            <FrameLayout
app/src/main/res/layout/activity_little_doctor_detail.xml
@@ -19,7 +19,7 @@
            android:id="@+id/titleBar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:title="@{viewModel.beanLiveData.symptom}"
            app:title="@{viewModel.beanLiveData.id!=0?viewModel.beanLiveData.symptom:`新增小医生`}"
            app:titleGravity="left"
            >
            <FrameLayout
app/src/main/res/layout/activity_login.xml
@@ -39,6 +39,7 @@
                android:layout_marginTop="-20dp"
                app:cardCornerRadius="15dp"
                app:cardElevation="0dp"
                app:cardBackgroundColor="@color/white"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/iv_bg_home">
app/src/main/res/layout/activity_marriage.xml
@@ -377,6 +377,7 @@
                    android:layout_marginHorizontal="14dp"
                    app:cardCornerRadius="10dp"
                    app:cardElevation="3dp"
                    app:cardBackgroundColor="@color/white"
                    tools:layout_height="wrap_content"
                    >
                    <LinearLayout
@@ -573,6 +574,7 @@
                    android:layout_marginTop="10dp"
                    app:cardCornerRadius="10dp"
                    app:cardElevation="2dp"
                    app:cardBackgroundColor="@color/white"
                    tools:layout_height="wrap_content"
                    >
                    <LinearLayout
@@ -633,6 +635,7 @@
                    android:layout_marginTop="10dp"
                    app:cardCornerRadius="10dp"
                    app:cardElevation="2dp"
                    app:cardBackgroundColor="@color/white"
                    tools:layout_height="wrap_content"
                    >
                    <LinearLayout
app/src/main/res/layout/activity_property.xml
@@ -387,6 +387,98 @@
                        />
                </LinearLayout>
                <View
                    android:layout_width="match_parent"
                    android:layout_height="0.3dp"
                    android:background="#FF939393" />
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="40dp"
                    android:gravity="center">
                    <androidx.appcompat.widget.AppCompatTextView
                        android:layout_width="0dp"
                        android:layout_weight="1"
                        android:layout_height="match_parent"
                        android:text="变更注销"
                        android:textColor="#FF333333"
                        android:textSize="14sp"
                        android:gravity="center"
                        android:maxLines="1"
                        app:autoSizeTextType="uniform"
                        app:autoSizeMinTextSize="10sp"
                        app:autoSizeMaxTextSize="14sp"
                        />
                    <com.android.app_base.widget.ClearEditText
                        android:id="@+id/et_is_change"
                        android:layout_width="0dp"
                        android:layout_weight="4"
                        android:layout_height="wrap_content"
                        android:background="@null"
                        android:inputType="text"
                        android:layout_marginStart="6dp"
                        android:text="@={viewModel.requestBeanLiveData.isChange}"
                        android:hint="请选择变更或注销"
                        android:textColorHint="#61000000"
                        android:textColor="#FF333333"
                        android:textSize="14sp"
                        android:maxLines="1"
                        app:autoSizeTextType="uniform"
                        app:autoSizeMinTextSize="10sp"
                        app:autoSizeMaxTextSize="14sp"
                        app:background="@drawable/ic_clear"
                        app:isEditable="@{false}"
                        />
                </LinearLayout>
                <View
                    android:layout_width="match_parent"
                    android:layout_height="0.3dp"
                    android:background="#FF939393" />
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="40dp"
                    android:gravity="center">
                    <androidx.appcompat.widget.AppCompatTextView
                        android:layout_width="0dp"
                        android:layout_weight="1"
                        android:layout_height="match_parent"
                        android:text="是否注销"
                        android:textColor="#FF333333"
                        android:textSize="14sp"
                        android:gravity="center"
                        android:maxLines="1"
                        app:autoSizeTextType="uniform"
                        app:autoSizeMinTextSize="10sp"
                        app:autoSizeMaxTextSize="14sp"
                        />
                    <com.android.app_base.widget.ClearEditText
                        android:id="@+id/et_is_logout"
                        android:layout_width="0dp"
                        android:layout_weight="4"
                        android:layout_height="wrap_content"
                        android:background="@null"
                        android:inputType="text"
                        android:layout_marginStart="6dp"
                        android:text="@={viewModel.requestBeanLiveData.statusStr}"
                        android:hint="请选择是否注销"
                        android:textColorHint="#61000000"
                        android:textColor="#FF333333"
                        android:textSize="14sp"
                        android:maxLines="1"
                        app:autoSizeTextType="uniform"
                        app:autoSizeMinTextSize="10sp"
                        app:autoSizeMaxTextSize="14sp"
                        app:background="@drawable/ic_clear"
                        app:isEditable="@{false}"
                        />
                </LinearLayout>
            </LinearLayout>
        </RelativeLayout>
app/src/main/res/layout/dialog_toatal_add.xml
New file
@@ -0,0 +1,272 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <data>
    </data>
    <androidx.cardview.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:cardBackgroundColor="#FFFFFCFC"
        app:cardCornerRadius="5dp"
        android:layout_marginHorizontal="45dp"
        android:layout_marginVertical="10dp"
        >
        <ImageView
            android:id="@+id/iv_dialog_close"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="15dp"
            android:layout_marginEnd="15dp"
            android:layout_gravity="end"
            android:background="@drawable/ic_dialog_close" />
        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:layout_marginTop="40dp"
            android:orientation="vertical"
            android:gravity="center_horizontal">
            <TextView
                android:id="@+id/tv_title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="请选择需要新增条目的模块"
                android:textColor="#FF333333"
                android:textSize="18sp"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintEnd_toEndOf="parent" />
            <LinearLayout
                android:id="@+id/layout_family_memorabilia"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="16dp"
                app:layout_constraintTop_toBottomOf="@id/tv_title"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.4"
                >
                <ImageView
                    android:layout_width="18dp"
                    android:layout_height="18dp"
                    android:src="@drawable/function_notes"
                    android:layout_gravity="center_vertical" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="家大事记"
                    android:textColor="#FF333333"
                    android:textSize="16sp"
                    android:layout_marginStart="20dp" />
            </LinearLayout>
            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="#FFF3F3F3"
                android:layout_marginTop="8dp"
                android:layout_marginHorizontal="15dp"
                app:layout_constraintTop_toBottomOf="@id/layout_family_memorabilia" />
            <LinearLayout
                android:id="@+id/layout_home_devices"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="16dp"
                app:layout_constraintTop_toBottomOf="@id/layout_family_memorabilia"
                app:layout_constraintStart_toStartOf="@id/layout_family_memorabilia">
                <ImageView
                    android:layout_width="18dp"
                    android:layout_height="18dp"
                    android:src="@drawable/function_home_devices"
                    android:layout_gravity="center_vertical" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="家庭设备"
                    android:textColor="#FF333333"
                    android:textSize="16sp"
                    android:layout_marginStart="20dp" />
            </LinearLayout>
            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="#FFF3F3F3"
                android:layout_marginTop="8dp"
                android:layout_marginHorizontal="15dp"
                app:layout_constraintTop_toBottomOf="@id/layout_home_devices" />
            <LinearLayout
                android:id="@+id/layout_little_doctor"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="16dp"
                app:layout_constraintTop_toBottomOf="@id/layout_home_devices"
                app:layout_constraintStart_toStartOf="@id/layout_family_memorabilia">
                <ImageView
                    android:layout_width="18dp"
                    android:layout_height="18dp"
                    android:src="@drawable/function_little_doctor"
                    android:layout_gravity="center_vertical" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="小医生"
                    android:textColor="#FF333333"
                    android:textSize="16sp"
                    android:layout_marginStart="20dp" />
            </LinearLayout>
            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="#FFF3F3F3"
                android:layout_marginTop="8dp"
                android:layout_marginHorizontal="15dp"
                app:layout_constraintTop_toBottomOf="@id/layout_little_doctor" />
            <LinearLayout
                android:id="@+id/layout_clean_storage"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="16dp"
                app:layout_constraintTop_toBottomOf="@id/layout_little_doctor"
                app:layout_constraintStart_toStartOf="@id/layout_family_memorabilia">
                <ImageView
                    android:layout_width="18dp"
                    android:layout_height="18dp"
                    android:src="@drawable/function_cleaning"
                    android:layout_gravity="center_vertical" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="保洁收纳"
                    android:textColor="#FF333333"
                    android:textSize="16sp"
                    android:layout_marginStart="20dp" />
            </LinearLayout>
            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="#FFF3F3F3"
                android:layout_marginTop="8dp"
                android:layout_marginHorizontal="15dp"
                app:layout_constraintTop_toBottomOf="@id/layout_clean_storage" />
            <LinearLayout
                android:id="@+id/layout_income_and_expenses"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="16dp"
                app:layout_constraintTop_toBottomOf="@id/layout_clean_storage"
                app:layout_constraintStart_toStartOf="@id/layout_family_memorabilia">
                <ImageView
                    android:layout_width="18dp"
                    android:layout_height="18dp"
                    android:src="@drawable/function_income_expense"
                    android:layout_gravity="center_vertical" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="家庭收支台账"
                    android:textColor="#FF333333"
                    android:textSize="16sp"
                    android:layout_marginStart="20dp" />
            </LinearLayout>
            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="#FFF3F3F3"
                android:layout_marginTop="8dp"
                android:layout_marginHorizontal="15dp"
                app:layout_constraintTop_toBottomOf="@id/layout_income_and_expenses" />
            <LinearLayout
                android:id="@+id/layout_health_care"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="16dp"
                app:layout_constraintTop_toBottomOf="@id/layout_income_and_expenses"
                app:layout_constraintStart_toStartOf="@id/layout_family_memorabilia">
                <ImageView
                    android:layout_width="18dp"
                    android:layout_height="18dp"
                    android:src="@drawable/function_health"
                    android:layout_gravity="center_vertical" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="健康保健"
                    android:textColor="#FF333333"
                    android:textSize="16sp"
                    android:layout_marginStart="20dp" />
            </LinearLayout>
            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="#FFF3F3F3"
                android:layout_marginTop="8dp"
                android:layout_marginHorizontal="15dp"
                app:layout_constraintTop_toBottomOf="@id/layout_health_care" />
            <LinearLayout
                android:id="@+id/layout_tourism"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="16dp"
                app:layout_constraintTop_toBottomOf="@id/layout_health_care"
                app:layout_constraintStart_toStartOf="@id/layout_family_memorabilia">
                <ImageView
                    android:layout_width="18dp"
                    android:layout_height="18dp"
                    android:src="@drawable/function_tour"
                    android:layout_gravity="center_vertical" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="旅游"
                    android:textColor="#FF333333"
                    android:textSize="16sp"
                    android:layout_marginStart="20dp" />
            </LinearLayout>
            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="#FFF3F3F3"
                android:layout_marginTop="8dp"
                android:layout_marginHorizontal="15dp"
                app:layout_constraintTop_toBottomOf="@id/layout_tourism" />
        </androidx.constraintlayout.widget.ConstraintLayout>
    </androidx.cardview.widget.CardView>
</layout>
app/src/main/res/layout/fragment_function.xml
@@ -73,7 +73,8 @@
            </FrameLayout>
        </FrameLayout>
        <LinearLayout
        <FrameLayout
            android:id="@+id/container"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:orientation="vertical"
@@ -573,11 +574,18 @@
                </androidx.constraintlayout.widget.ConstraintLayout>
            </androidx.core.widget.NestedScrollView>
            <com.google.android.material.floatingactionbutton.FloatingActionButton
                android:id="@+id/fab_add"
                android:layout_width="56dp"
                android:layout_height="56dp"
                android:layout_gravity="end | bottom"
                android:layout_marginEnd="25dp"
                android:layout_marginBottom="44dp"
                android:src="@drawable/ic_add"
                app:fabCustomSize="56dp"
                />
        </LinearLayout>
        </FrameLayout>
    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>
app/src/main/res/layout/fragment_home.xml
@@ -38,1210 +38,42 @@
            </FrameLayout>
        </com.android.app_base.widget.ExtendTitleBar>
        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/layout_parent"
            >
            <androidx.constraintlayout.widget.ConstraintLayout
                android:id="@+id/layout_home_root_net"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                tools:visibility="gone"
                >
                <ImageView
                    android:id="@+id/iv_treeView"
        <com.otaliastudios.zoom.ZoomLayout
            android:id="@+id/zoomLayout"
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    app:layout_constraintDimensionRatio="360:417"
                    android:background="@drawable/bg_home_root_net"
                    app:layout_constraintBottom_toBottomOf="parent" />
                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:background="@drawable/bg_home_root_net_grass"
                    app:layout_constraintBottom_toBottomOf="@id/iv_treeView"
                    app:layout_constraintDimensionRatio="350:217"
                    android:layout_marginBottom="-56dp"
                    />
            </androidx.constraintlayout.widget.ConstraintLayout>
            <HorizontalScrollView
                android:id="@+id/scrollView"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                android:orientation="horizontal"
                android:visibility="gone"
                tools:visibility="visible"
                >
                <androidx.constraintlayout.widget.ConstraintLayout
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
            android:layout_weight="1"
            android:scrollbars="vertical|horizontal"
            app:transformation="centerInside"
            app:transformationGravity="auto"
            app:alignment="center"
            app:overScrollHorizontal="true"
            app:overScrollVertical="true"
            app:overPinchable="true"
            app:horizontalPanEnabled="true"
            app:verticalPanEnabled="true"
            app:zoomEnabled="true"
            app:flingEnabled="true"
            app:scrollEnabled="true"
            app:oneFingerScrollEnabled="true"
            app:twoFingersScrollEnabled="true"
            app:threeFingersScrollEnabled="true"
            app:minZoom="1"
            app:minZoomType="zoom"
            app:maxZoom="2.5"
            app:maxZoomType="realZoom"
            app:animationDuration="280"
            app:hasClickableChildren="true"
            android:background="@color/color_normal_background"
                    >
                    <ImageView
                        android:id="@+id/iv_treeView_diff"
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:background="@drawable/bg_home_root_net_detail"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintDimensionRatio="676:505"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintHorizontal_bias="1.0"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintVertical_bias="0.0" />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_first_1"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:roundPercent="1"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.07"
                        app:layout_constraintHorizontal_bias="0.44"
                        app:layout_constraintVertical_bias="0.795"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <TextView
                        android:id="@+id/tv_first_1"
            <com.application.zhangshi_app_android.widget.HomeMindMapLayout
                android:id="@+id/scrollHomeMindMapLayout"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="30sp"
                        android:text="1"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF386C19"
                        app:layout_constraintHorizontal_bias="0.435"
                        app:layout_constraintVertical_bias="0.795"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_first_2"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:roundPercent="1"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.08"
                        app:layout_constraintHorizontal_bias="0.485"
                        app:layout_constraintVertical_bias="0.887"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <TextView
                        android:id="@+id/tv_first_2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="30sp"
                        android:text="1"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF386C19"
                        app:layout_constraintHorizontal_bias="0.485"
                        app:layout_constraintVertical_bias="0.88"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_second_1_1"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:roundPercent="1"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.060"
                        app:layout_constraintHorizontal_bias="0.365"
                        app:layout_constraintVertical_bias="0.65"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <TextView
                        android:id="@+id/tv_second_1_1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="30sp"
                        android:text="2"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF93CD91"
                        app:layout_constraintHorizontal_bias="0.395"
                        app:layout_constraintVertical_bias="0.68"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_second_1_2"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:roundPercent="1"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.055"
                        app:layout_constraintHorizontal_bias="0.29"
                        app:layout_constraintVertical_bias="0.655"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <TextView
                        android:id="@+id/tv_second_1_2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="24sp"
                        android:text="2"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF93CD91"
                        app:layout_constraintHorizontal_bias="0.325"
                        app:layout_constraintVertical_bias="0.65"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_second_2_1"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:roundPercent="1"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.065"
                        app:layout_constraintHorizontal_bias="0.425"
                        app:layout_constraintVertical_bias="0.585"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <TextView
                        android:id="@+id/tv_second_2_1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="30sp"
                        android:text="2"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF93CD91"
                        app:layout_constraintHorizontal_bias="0.455"
                        app:layout_constraintVertical_bias="0.62"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_second_2_2"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:roundPercent="1"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.055"
                        app:layout_constraintHorizontal_bias="0.37"
                        app:layout_constraintVertical_bias="0.52"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <TextView
                        android:id="@+id/tv_second_2_2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="24sp"
                        android:text="2"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF93CD91"
                        app:layout_constraintHorizontal_bias="0.4"
                        app:layout_constraintVertical_bias="0.53"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_second_3_1"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:roundPercent="1"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.063"
                        app:layout_constraintHorizontal_bias="0.525"
                        app:layout_constraintVertical_bias="0.58"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <TextView
                        android:id="@+id/tv_second_3_1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="30sp"
                        android:text="2"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF93CD91"
                        app:layout_constraintHorizontal_bias="0.515"
                        app:layout_constraintVertical_bias="0.63"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_second_3_2"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:roundPercent="1"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.055"
                        app:layout_constraintHorizontal_bias="0.6"
                        app:layout_constraintVertical_bias="0.51"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <TextView
                        android:id="@+id/tv_second_3_2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="24sp"
                        android:text="2"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF93CD91"
                        app:layout_constraintHorizontal_bias="0.58"
                        app:layout_constraintVertical_bias="0.545"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_second_4_1"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:roundPercent="1"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.063"
                        app:layout_constraintHorizontal_bias="0.6"
                        app:layout_constraintVertical_bias="0.65"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <TextView
                        android:id="@+id/tv_second_4_1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="30sp"
                        android:text="2"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF93CD91"
                        app:layout_constraintHorizontal_bias="0.565"
                        app:layout_constraintVertical_bias="0.68"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_second_4_2"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:roundPercent="1"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.07"
                        app:layout_constraintHorizontal_bias="0.685"
                        app:layout_constraintVertical_bias="0.63"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <TextView
                        android:id="@+id/tv_second_4_2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="24sp"
                        android:text="2"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF93CD91"
                        app:layout_constraintHorizontal_bias="0.645"
                        app:layout_constraintVertical_bias="0.65"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_third_1_1"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:roundPercent="1"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.08"
                        app:layout_constraintHorizontal_bias="0.26"
                        app:layout_constraintVertical_bias="0.76"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <TextView
                        android:id="@+id/tv_third_1_1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="20sp"
                        android:text="3"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF93BE67"
                        app:layout_constraintHorizontal_bias="0.31"
                        app:layout_constraintVertical_bias="0.73"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_third_4_1"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:roundPercent="1"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.075"
                        app:layout_constraintHorizontal_bias="0.69"
                        app:layout_constraintVertical_bias="0.745"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <TextView
                        android:id="@+id/tv_third_4_1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="20sp"
                        android:text="3"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF93BE67"
                        app:layout_constraintHorizontal_bias="0.64"
                        app:layout_constraintVertical_bias="0.73"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_third_2_1"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:roundPercent="1"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.075"
                        app:layout_constraintHorizontal_bias="0.371"
                        app:layout_constraintVertical_bias="0.334"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <TextView
                        android:id="@+id/tv_third_2_1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="20sp"
                        android:text="3"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF93BE67"
                        app:layout_constraintHorizontal_bias="0.39"
                        app:layout_constraintVertical_bias="0.4"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_third_3_1"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:roundPercent="1"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.075"
                        app:layout_constraintHorizontal_bias="0.49"
                        app:layout_constraintVertical_bias="0.28"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <TextView
                        android:id="@+id/tv_third_3_1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="20sp"
                        android:text="3"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF93BE67"
                        app:layout_constraintHorizontal_bias="0.51"
                        app:layout_constraintVertical_bias="0.34"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
        </com.otaliastudios.zoom.ZoomLayout>
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_third_1_2"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:roundPercent="1"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.06"
                        app:layout_constraintHorizontal_bias="0.17"
                        app:layout_constraintVertical_bias="0.53"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <TextView
                        android:id="@+id/tv_third_1_2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="20sp"
                        android:text="3"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF93BE67"
                        app:layout_constraintHorizontal_bias="0.195"
                        app:layout_constraintVertical_bias="0.575"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_third_1_4"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:roundPercent="1"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.06"
                        app:layout_constraintHorizontal_bias="0.065"
                        app:layout_constraintVertical_bias="0.47"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <TextView
                        android:id="@+id/tv_third_1_4"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="20sp"
                        android:text="3"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF93BE67"
                        app:layout_constraintHorizontal_bias="0.105"
                        app:layout_constraintVertical_bias="0.505"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_third_1_3"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:roundPercent="1"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.07"
                        app:layout_constraintHorizontal_bias="0.05"
                        app:layout_constraintVertical_bias="0.59"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <TextView
                        android:id="@+id/tv_third_1_3"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="24sp"
                        android:text="3"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF93BE67"
                        app:layout_constraintHorizontal_bias="0.105"
                        app:layout_constraintVertical_bias="0.62"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_third_2_2"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:roundPercent="1"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.06"
                        app:layout_constraintHorizontal_bias="0.295"
                        app:layout_constraintVertical_bias="0.315"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <TextView
                        android:id="@+id/tv_third_2_2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="24sp"
                        android:text="3"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF93BE67"
                        app:layout_constraintHorizontal_bias="0.31"
                        app:layout_constraintVertical_bias="0.37"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_third_2_3"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:roundPercent="1"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.08"
                        app:layout_constraintHorizontal_bias="0.177"
                        app:layout_constraintVertical_bias="0.265"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <TextView
                        android:id="@+id/tv_third_2_3"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="24sp"
                        android:text="3"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF93BE67"
                        app:layout_constraintHorizontal_bias="0.22"
                        app:layout_constraintVertical_bias="0.34"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        android:rotation="-30"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_third_2_4"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:roundPercent="1"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.06"
                        app:layout_constraintHorizontal_bias="0.33"
                        app:layout_constraintVertical_bias="0.115"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <TextView
                        android:id="@+id/tv_third_2_4"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="24sp"
                        android:text="3"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF93BE67"
                        app:layout_constraintHorizontal_bias="0.335"
                        app:layout_constraintVertical_bias="0.17"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_third_3_2"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:roundPercent="1"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.08"
                        app:layout_constraintHorizontal_bias="0.485"
                        app:layout_constraintVertical_bias="0.08"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <TextView
                        android:id="@+id/tv_third_3_2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="24sp"
                        android:text="3"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF93BE67"
                        app:layout_constraintHorizontal_bias="0.47"
                        app:layout_constraintVertical_bias="0.16"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_third_3_3"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:roundPercent="1"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.07"
                        app:layout_constraintHorizontal_bias="0.685"
                        app:layout_constraintVertical_bias="0.24"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <TextView
                        android:id="@+id/tv_third_3_3"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="24sp"
                        android:text="3"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF93BE67"
                        app:layout_constraintHorizontal_bias="0.67"
                        app:layout_constraintVertical_bias="0.31"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_third_3_4"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:roundPercent="1"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.08"
                        app:layout_constraintHorizontal_bias="0.745"
                        app:layout_constraintVertical_bias="0.08"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <TextView
                        android:id="@+id/tv_third_3_4"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="24sp"
                        android:text="3"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF93BE67"
                        app:layout_constraintHorizontal_bias="0.735"
                        app:layout_constraintVertical_bias="0.16"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_third_4_2"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:roundPercent="1"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.08"
                        app:layout_constraintHorizontal_bias="0.885"
                        app:layout_constraintVertical_bias="0.32"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <TextView
                        android:id="@+id/tv_third_4_2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="24sp"
                        android:text="3"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF93BE67"
                        app:layout_constraintHorizontal_bias="0.84"
                        app:layout_constraintVertical_bias="0.38"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        android:rotation="20"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_fourth_4_3"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.06"
                        app:layout_constraintHorizontal_bias="0.815"
                        app:layout_constraintVertical_bias="0.665"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:roundPercent="1"
                        />
                    <TextView
                        android:id="@+id/tv_fourth_4_3"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="24sp"
                        android:text="4"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF3F7E00"
                        app:layout_constraintHorizontal_bias="0.77"
                        app:layout_constraintVertical_bias="0.66"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_fourth_4_2"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.07"
                        app:layout_constraintHorizontal_bias="0.876"
                        app:layout_constraintVertical_bias="0.545"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:roundPercent="1"
                        />
                    <TextView
                        android:id="@+id/tv_fourth_4_2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="24sp"
                        android:text="4"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF3F7E00"
                        app:layout_constraintHorizontal_bias="0.825"
                        app:layout_constraintVertical_bias="0.57"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_fourth_4_1"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.06"
                        app:layout_constraintHorizontal_bias="0.785"
                        app:layout_constraintVertical_bias="0.46"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:roundPercent="1"
                        />
                    <TextView
                        android:id="@+id/tv_fourth_4_1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="24sp"
                        android:text="4"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF3F7E00"
                        app:layout_constraintHorizontal_bias="0.76"
                        app:layout_constraintVertical_bias="0.505"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_fourth_3_3"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.06"
                        app:layout_constraintHorizontal_bias="0.79"
                        app:layout_constraintVertical_bias="0.263"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:roundPercent="1"
                        />
                    <TextView
                        android:id="@+id/tv_fourth_3_3"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="24sp"
                        android:text="4"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF3F7E00"
                        app:layout_constraintHorizontal_bias="0.755"
                        app:layout_constraintVertical_bias="0.295"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_fourth_3_2"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.06"
                        app:layout_constraintHorizontal_bias="0.6455"
                        app:layout_constraintVertical_bias="0.115"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:roundPercent="1"
                        />
                    <TextView
                        android:id="@+id/tv_fourth_3_2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="24sp"
                        android:text="4"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF3F7E00"
                        app:layout_constraintHorizontal_bias="0.63"
                        app:layout_constraintVertical_bias="0.17"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_fourth_3_1"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.06"
                        app:layout_constraintHorizontal_bias="0.584"
                        app:layout_constraintVertical_bias="0.22"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:roundPercent="1"
                        />
                    <TextView
                        android:id="@+id/tv_fourth_3_1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="24sp"
                        android:text="4"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF3F7E00"
                        app:layout_constraintHorizontal_bias="0.565"
                        app:layout_constraintVertical_bias="0.275"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        android:rotation="20"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_fourth_3_4"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.07"
                        app:layout_constraintHorizontal_bias="0.575"
                        app:layout_constraintVertical_bias="0.06"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:roundPercent="1"
                        />
                    <TextView
                        android:id="@+id/tv_fourth_3_4"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="24sp"
                        android:text="4"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF3F7E00"
                        app:layout_constraintHorizontal_bias="0.57"
                        app:layout_constraintVertical_bias="0.125"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_fourth_2_3"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.06"
                        app:layout_constraintHorizontal_bias="0.415"
                        app:layout_constraintVertical_bias="0.225"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:roundPercent="1"
                        />
                    <TextView
                        android:id="@+id/tv_fourth_2_3"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="24sp"
                        android:text="4"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF3F7E00"
                        app:layout_constraintHorizontal_bias="0.425"
                        app:layout_constraintVertical_bias="0.285"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        android:rotation="-10"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_fourth_2_4"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.05"
                        app:layout_constraintHorizontal_bias="0.403"
                        app:layout_constraintVertical_bias="0.05"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:roundPercent="1"
                        />
                    <TextView
                        android:id="@+id/tv_fourth_2_4"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="20sp"
                        android:text="4"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF3F7E00"
                        app:layout_constraintHorizontal_bias="0.41"
                        app:layout_constraintVertical_bias="0.095"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        android:rotation="-10"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_fourth_2_2"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.07"
                        app:layout_constraintHorizontal_bias="0.228"
                        app:layout_constraintVertical_bias="0.13"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:roundPercent="1"
                        />
                    <TextView
                        android:id="@+id/tv_fourth_2_2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="24sp"
                        android:text="4"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF3F7E00"
                        app:layout_constraintHorizontal_bias="0.24"
                        app:layout_constraintVertical_bias="0.2"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_fourth_2_1"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.06"
                        app:layout_constraintHorizontal_bias="0.19"
                        app:layout_constraintVertical_bias="0.41"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:roundPercent="1"
                        />
                    <TextView
                        android:id="@+id/tv_fourth_2_1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="24sp"
                        android:text="4"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF3F7E00"
                        app:layout_constraintHorizontal_bias="0.24"
                        app:layout_constraintVertical_bias="0.44"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        android:rotation="-10"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_fourth_1_2"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.06"
                        app:layout_constraintHorizontal_bias="0.064"
                        app:layout_constraintVertical_bias="0.32"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:roundPercent="1"
                        />
                    <TextView
                        android:id="@+id/tv_fourth_1_2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="24sp"
                        android:text="4"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF3F7E00"
                        app:layout_constraintHorizontal_bias="0.1"
                        app:layout_constraintVertical_bias="0.37"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        android:rotation="-10"
                        />
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_fourth_1_1"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:background="@drawable/img_sakura"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintHeight_percent="0.06"
                        app:layout_constraintHorizontal_bias="0.086"
                        app:layout_constraintVertical_bias="0.724"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:roundPercent="1"
                        />
                    <TextView
                        android:id="@+id/tv_fourth_1_1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="24sp"
                        android:text="4"
                        android:fontFamily="@font/cookie_regular"
                        android:textColor="#FF3F7E00"
                        app:layout_constraintHorizontal_bias="0.13"
                        app:layout_constraintVertical_bias="0.705"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        android:rotation="-20"
                        />
                </androidx.constraintlayout.widget.ConstraintLayout>
            </HorizontalScrollView>
        </androidx.constraintlayout.widget.ConstraintLayout>
    </LinearLayout>
</layout>
app/src/main/res/layout/fragment_personal_center.xml
@@ -69,6 +69,7 @@
                    >
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/iv_head"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:layout_marginVertical="25dp"
@@ -81,6 +82,15 @@
                        app:roundPercent="1"
                        app:imageUrl="@{viewModel.infoLiveData.img}"
                        />
                    <ImageView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:background="@drawable/ic_camera"
                        app:layout_constraintStart_toStartOf="@id/iv_head"
                        app:layout_constraintEnd_toEndOf="@id/iv_head"
                        app:layout_constraintBottom_toBottomOf="@id/iv_head"
                        android:layout_marginBottom="-15dp"
                        />
                    <View
                        android:layout_width="match_parent"
                        android:layout_height="1dp"
app/src/main/res/layout/item_family_member.xml
@@ -11,6 +11,7 @@
        android:layout_height="wrap_content"
        app:cardCornerRadius="10dp"
        app:cardElevation="5dp"
        app:cardBackgroundColor="@color/white"
        android:layout_margin="1dp">
        <LinearLayout
@@ -39,7 +40,7 @@
                android:layout_height="30dp"
                android:layout_marginStart="8dp"
                android:layout_marginEnd="10dp"
                android:background="@drawable/img_sakura"
                android:scaleType="fitCenter"
                app:roundPercent="1"
                />
            <!-- 名字 -->
@@ -49,7 +50,8 @@
                android:layout_height="wrap_content"
                android:text="林佳林佳"
                android:textSize="16sp"
                android:textColor="#FF5F6980"
                android:textStyle="bold"
                android:textColor="#FFF6739F"
                android:ellipsize="marquee"
                android:singleLine="true"
                android:focusable="true"
app/src/main/res/layout/pop_basic_information_double.xml
File was renamed from app/src/main/res/layout/pop_basic_information.xml
@@ -46,7 +46,6 @@
                        android:layout_height="0dp"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintWidth_percent="0.3"
                        android:background="@color/teal_200"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="@id/layout_personal_3"
@@ -803,7 +802,6 @@
                        android:layout_height="0dp"
                        app:layout_constraintDimensionRatio="1"
                        app:layout_constraintWidth_percent="0.3"
                        android:background="@color/teal_200"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="@id/layout_spouse_3"
app/src/main/res/layout/pop_basic_information_single.xml
New file
@@ -0,0 +1,761 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">
    <data>
        <variable
            name="selfBean"
            type="com.application.zhangshi_app_android.bean.HomeRootBean"
            />
    </data>
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/transparent"
            android:layout_gravity="center"
            >
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:background="@color/transparent">
                <androidx.cardview.widget.CardView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    app:cardCornerRadius="6dp"
                    app:cardBackgroundColor="#F6FFFFFF"
                    app:cardElevation="5dp"
                    android:layout_marginHorizontal="10dp"
                    android:layout_marginVertical="15dp">
                    <androidx.constraintlayout.widget.ConstraintLayout
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:layout_marginEnd="7dp"
                        android:layout_marginStart="10dp"
                        android:layout_marginVertical="24dp">
                        <androidx.constraintlayout.utils.widget.ImageFilterView
                            android:id="@+id/iv_photo"
                            android:layout_width="0dp"
                            android:layout_height="0dp"
                            app:layout_constraintDimensionRatio="1"
                            app:layout_constraintWidth_percent="0.55"
                            app:layout_constraintStart_toStartOf="parent"
                            app:layout_constraintTop_toTopOf="parent"
                            app:layout_constraintBottom_toBottomOf="@id/layout_personal_1"
                            app:round="10dp"
                            app:imageUrl="@{selfBean.img}"
                            />
                        <TextView
                            android:id="@+id/tv_basic_personal_information"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginStart="10dp"
                            android:text="个人基本信息"
                            android:textColor="#99000000"
                            android:textSize="10sp"
                            app:layout_constraintStart_toEndOf="@id/iv_photo"
                            app:layout_constraintTop_toTopOf="@id/iv_photo"
                            app:layout_constraintBottom_toTopOf="@id/layout_personal_1"
                            />
                        <LinearLayout
                            android:id="@+id/layout_personal_1"
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            app:layout_constraintEnd_toEndOf="parent"
                            app:layout_constraintStart_toStartOf="@+id/tv_basic_personal_information"
                            app:layout_constraintTop_toBottomOf="@id/tv_basic_personal_information"
                            app:layout_constraintBottom_toBottomOf="@id/iv_photo"
                            android:layout_marginTop="10dp"
                            android:orientation="vertical"
                            >
                            <LinearLayout
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                >
                                <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:background="@drawable/shape_fffad1e0_10_10_0_10"
                                    android:paddingHorizontal="6dp"
                                    android:paddingVertical="3dp"
                                    android:text="姓名"
                                    android:textColor="#FF000000"
                                    android:textSize="12sp" />
                                <FrameLayout
                                    android:layout_width="wrap_content"
                                    android:layout_height="match_parent"
                                    >
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:paddingHorizontal="6dp"
                                        android:text="@{selfBean.nickName}"
                                        android:textColor="#FF000000"
                                        android:textSize="12sp"
                                        android:layout_gravity="center_vertical"
                                        app:textOverflowMode="@{4}"
                                        tools:text="aaaaaaaaaaaaaaaaaaaaaaaaa"
                                        />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:layout_gravity="bottom"
                                        android:background="#FFFAD1E0" />
                                </FrameLayout>
                            </LinearLayout>
                            <LinearLayout
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:layout_marginTop="10dp"
                                >
                                <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:background="@drawable/shape_fffad1e0_10_10_0_10"
                                    android:paddingHorizontal="6dp"
                                    android:paddingVertical="3dp"
                                    android:text="性别"
                                    android:textColor="#FF000000"
                                    android:textSize="12sp"
                                    />
                                <FrameLayout
                                    android:layout_width="wrap_content"
                                    android:layout_height="match_parent"
                                    >
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:paddingHorizontal="6dp"
                                        android:text="@{selfBean.sex==1?`男`:`女`}"
                                        android:textColor="#FF000000"
                                        android:textSize="12sp"
                                        android:layout_gravity="center_vertical"
                                        app:textOverflowMode="@{4}"
                                        />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:layout_gravity="bottom"
                                        android:background="#FFFAD1E0" />
                                </FrameLayout>
                            </LinearLayout>
                            <LinearLayout
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginTop="10dp"
                                >
                                <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:background="@drawable/shape_fffad1e0_10_10_0_10"
                                    android:paddingHorizontal="6dp"
                                    android:paddingVertical="3dp"
                                    android:text="身份"
                                    android:textColor="#FF000000"
                                    android:textSize="12sp" />
                                <FrameLayout
                                    android:layout_width="wrap_content"
                                    android:layout_height="match_parent"
                                    >
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:paddingHorizontal="6dp"
                                        android:text="@{`第`+ selfBean.identity + `代`}"
                                        android:textColor="#FF000000"
                                        android:textSize="12sp"
                                        android:layout_gravity="center_vertical"
                                        app:textOverflowMode="@{4}"
                                        />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:layout_gravity="bottom"
                                        android:background="#FFFAD1E0" />
                                </FrameLayout>
                            </LinearLayout>
                            <LinearLayout
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginTop="10dp">
                                <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:background="@drawable/shape_fffad1e0_10_10_0_10"
                                    android:paddingHorizontal="6dp"
                                    android:paddingVertical="3dp"
                                    android:text="生日"
                                    android:textColor="#FF000000"
                                    android:textSize="12sp" />
                                <FrameLayout
                                    android:layout_width="wrap_content"
                                    android:layout_height="match_parent">
                                    <androidx.appcompat.widget.AppCompatTextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:text="@{selfBean.birth}"
                                        android:textColor="#FF000000"
                                        android:textSize="12sp"
                                        app:autoSizeTextType="uniform"
                                        app:autoSizeMaxTextSize="16sp"
                                        app:autoSizeMinTextSize="10sp"
                                        android:ellipsize="end"
                                        android:maxLines="1"
                                        android:layout_gravity="center"
                                        tools:text="2001-01-01"
                                        />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:layout_gravity="bottom"
                                        android:background="#FFFAD1E0" />
                                </FrameLayout>
                            </LinearLayout>
                            <LinearLayout
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:layout_marginTop="10dp"
                                >
                                <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:background="@drawable/shape_fffad1e0_10_10_0_10"
                                    android:paddingHorizontal="6dp"
                                    android:paddingVertical="3dp"
                                    android:text="曾用名"
                                    android:textColor="#FF000000"
                                    android:textSize="12sp" />
                                <FrameLayout
                                    android:layout_width="wrap_content"
                                    android:layout_height="match_parent"
                                    >
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:paddingHorizontal="6dp"
                                        android:layout_gravity="center_vertical"
                                        app:textOverflowMode="@{4}"
                                        android:text="@{selfBean.oldName}"
                                        android:textColor="#FF000000"
                                        android:textSize="12sp"
                                        />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:layout_gravity="bottom"
                                        android:background="#FFFAD1E0" />
                                </FrameLayout>
                            </LinearLayout>
                            <LinearLayout
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:layout_marginTop="10dp">
                                <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:background="@drawable/shape_fffad1e0_10_10_0_10"
                                    android:paddingHorizontal="6dp"
                                    android:paddingVertical="3dp"
                                    android:text="民族"
                                    android:textColor="#FF000000"
                                    android:textSize="12sp" />
                                <FrameLayout
                                    android:layout_width="wrap_content"
                                    android:layout_height="match_parent">
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:paddingHorizontal="6dp"
                                        android:text="@{selfBean.nation}"
                                        android:textColor="#FF000000"
                                        android:textSize="12sp"
                                        android:layout_gravity="center_vertical"
                                        app:textOverflowMode="@{4}"
                                        />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:layout_gravity="bottom"
                                        android:background="#FFFAD1E0" />
                                </FrameLayout>
                            </LinearLayout>
                        </LinearLayout>
                        <LinearLayout
                            android:id="@+id/layout_personal_4"
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_marginTop="24dp"
                            app:layout_constraintEnd_toEndOf="parent"
                            app:layout_constraintStart_toStartOf="parent"
                            app:layout_constraintTop_toBottomOf="@id/layout_personal_1">
                            <LinearLayout
                                android:layout_width="0dp"
                                android:layout_height="wrap_content"
                                android:layout_weight="1">
                                <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:background="@drawable/shape_fffad1e0_10_10_0_10"
                                    android:paddingHorizontal="6dp"
                                    android:paddingVertical="3dp"
                                    android:text="婚姻状况"
                                    android:textColor="#FF000000"
                                    android:textSize="12sp" />
                                <FrameLayout
                                    android:layout_width="wrap_content"
                                    android:layout_height="match_parent">
                                    <TextView
                                        android:layout_width="match_parent"
                                        android:layout_height="wrap_content"
                                        android:paddingHorizontal="6dp"
                                        android:layout_gravity="center_vertical"
                                        app:textOverflowMode="@{4}"
                                        android:text="@{selfBean.maritalStatusStr}"
                                        android:textColor="#FF000000"
                                        android:textSize="12sp"
                                        />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:layout_gravity="bottom"
                                        android:background="#FFFAD1E0" />
                                </FrameLayout>
                            </LinearLayout>
                            <LinearLayout
                                android:layout_width="0dp"
                                android:layout_height="wrap_content"
                                android:layout_weight="1"
                                android:layout_marginStart="10dp">
                                <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:background="@drawable/shape_fffad1e0_10_10_0_10"
                                    android:paddingHorizontal="6dp"
                                    android:paddingVertical="3dp"
                                    android:text="配偶"
                                    android:textColor="#FF000000"
                                    android:textSize="12sp" />
                                <FrameLayout
                                    android:layout_width="wrap_content"
                                    android:layout_height="match_parent">
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:layout_gravity="center_vertical"
                                        app:textOverflowMode="@{4}"
                                        android:paddingHorizontal="6dp"
                                        android:text="@{selfBean.spouse.nickName}"
                                        android:textColor="#FF000000"
                                        android:textSize="12sp" />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:layout_gravity="bottom"
                                        android:background="#FFFAD1E0" />
                                </FrameLayout>
                            </LinearLayout>
                        </LinearLayout>
                        <LinearLayout
                            android:id="@+id/layout_personal_5"
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_marginTop="16dp"
                            app:layout_constraintEnd_toEndOf="parent"
                            app:layout_constraintStart_toStartOf="parent"
                            app:layout_constraintTop_toBottomOf="@+id/layout_personal_4">
                            <LinearLayout
                                android:layout_width="0dp"
                                android:layout_height="wrap_content"
                                android:layout_weight="1">
                                <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:background="@drawable/shape_fffad1e0_10_10_0_10"
                                    android:paddingHorizontal="6dp"
                                    android:paddingVertical="3dp"
                                    android:text="户籍地址"
                                    android:textColor="#FF000000"
                                    android:textSize="12sp" />
                                <FrameLayout
                                    android:layout_width="wrap_content"
                                    android:layout_height="match_parent">
                                    <TextView
                                        android:layout_width="match_parent"
                                        android:layout_height="wrap_content"
                                        android:layout_gravity="center_vertical"
                                        app:textOverflowMode="@{4}"
                                        android:paddingHorizontal="6dp"
                                        android:text="@{selfBean.locationAddress}"
                                        android:textColor="#FF000000"
                                        android:textSize="12sp"
                                        />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:layout_gravity="bottom"
                                        android:background="#FFFAD1E0" />
                                </FrameLayout>
                            </LinearLayout>
                            <LinearLayout
                                android:layout_width="0dp"
                                android:layout_height="wrap_content"
                                android:layout_weight="1"
                                android:layout_marginStart="10dp">
                                <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:background="@drawable/shape_fffad1e0_10_10_0_10"
                                    android:paddingHorizontal="6dp"
                                    android:paddingVertical="3dp"
                                    android:text="联系方式"
                                    android:textColor="#FF000000"
                                    android:textSize="12sp" />
                                <FrameLayout
                                    android:layout_width="wrap_content"
                                    android:layout_height="match_parent">
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:layout_gravity="center_vertical"
                                        app:textOverflowMode="@{4}"
                                        android:paddingHorizontal="6dp"
                                        android:text="@{selfBean.phoneNumber}"
                                        android:textColor="#FF000000"
                                        android:textSize="12sp" />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:layout_gravity="bottom"
                                        android:background="#FFFAD1E0" />
                                </FrameLayout>
                            </LinearLayout>
                        </LinearLayout>
                        <LinearLayout
                            android:id="@+id/layout_personal_6"
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_marginTop="16dp"
                            app:layout_constraintEnd_toEndOf="parent"
                            app:layout_constraintStart_toStartOf="parent"
                            app:layout_constraintTop_toBottomOf="@+id/layout_personal_5">
                            <LinearLayout
                                android:layout_width="0dp"
                                android:layout_height="wrap_content"
                                android:layout_weight="1">
                                <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:background="@drawable/shape_fffad1e0_10_10_0_10"
                                    android:paddingHorizontal="6dp"
                                    android:paddingVertical="3dp"
                                    android:text="常住地址"
                                    android:textColor="#FF000000"
                                    android:textSize="12sp" />
                                <FrameLayout
                                    android:layout_width="wrap_content"
                                    android:layout_height="match_parent">
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:layout_gravity="center_vertical"
                                        app:textOverflowMode="@{4}"
                                        android:paddingHorizontal="6dp"
                                        android:text="@{selfBean.alwaysAddress}"
                                        android:textColor="#FF000000"
                                        android:textSize="12sp" />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:layout_gravity="bottom"
                                        android:background="#FFFAD1E0" />
                                </FrameLayout>
                            </LinearLayout>
                            <LinearLayout
                                android:layout_width="0dp"
                                android:layout_height="wrap_content"
                                android:layout_weight="1"
                                android:layout_marginStart="10dp">
                                <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:background="@drawable/shape_fffad1e0_10_10_0_10"
                                    android:paddingHorizontal="6dp"
                                    android:paddingVertical="3dp"
                                    android:text="微信号"
                                    android:textColor="#FF000000"
                                    android:textSize="12sp" />
                                <FrameLayout
                                    android:layout_width="wrap_content"
                                    android:layout_height="match_parent">
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:layout_gravity="center_vertical"
                                        app:textOverflowMode="@{4}"
                                        android:paddingHorizontal="6dp"
                                        android:text="@{selfBean.wxNo}"
                                        android:textColor="#FF000000"
                                        android:textSize="12sp" />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:layout_gravity="bottom"
                                        android:background="#FFFAD1E0" />
                                </FrameLayout>
                            </LinearLayout>
                        </LinearLayout>
                        <LinearLayout
                            android:id="@+id/layout_personal_7"
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_marginTop="16dp"
                            app:layout_constraintEnd_toEndOf="parent"
                            app:layout_constraintStart_toStartOf="parent"
                            app:layout_constraintTop_toBottomOf="@+id/layout_personal_6">
                            <LinearLayout
                                android:layout_width="0dp"
                                android:layout_height="wrap_content"
                                android:layout_weight="1">
                                <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:background="@drawable/shape_fffad1e0_10_10_0_10"
                                    android:paddingHorizontal="6dp"
                                    android:paddingVertical="3dp"
                                    android:text="政治面貌"
                                    android:textColor="#FF000000"
                                    android:textSize="12sp" />
                                <FrameLayout
                                    android:layout_width="wrap_content"
                                    android:layout_height="match_parent">
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:layout_gravity="center_vertical"
                                        app:textOverflowMode="@{4}"
                                        android:paddingHorizontal="6dp"
                                        android:text="@{selfBean.politicalOutlook}"
                                        android:textColor="#FF000000"
                                        android:textSize="12sp" />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:layout_gravity="bottom"
                                        android:background="#FFFAD1E0" />
                                </FrameLayout>
                            </LinearLayout>
                            <LinearLayout
                                android:layout_width="0dp"
                                android:layout_height="wrap_content"
                                android:layout_weight="1"
                                android:layout_marginStart="10dp">
                                <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:background="@drawable/shape_fffad1e0_10_10_0_10"
                                    android:paddingHorizontal="6dp"
                                    android:paddingVertical="3dp"
                                    android:text="QQ号"
                                    android:textColor="#FF000000"
                                    android:textSize="12sp" />
                                <FrameLayout
                                    android:layout_width="wrap_content"
                                    android:layout_height="match_parent">
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:layout_gravity="center_vertical"
                                        app:textOverflowMode="@{4}"
                                        android:paddingHorizontal="6dp"
                                        android:text="@{selfBean.qqNo}"
                                        android:textColor="#FF000000"
                                        android:textSize="12sp" />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:layout_gravity="bottom"
                                        android:background="#FFFAD1E0" />
                                </FrameLayout>
                            </LinearLayout>
                        </LinearLayout>
                        <LinearLayout
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_marginTop="16dp"
                            app:layout_constraintEnd_toEndOf="parent"
                            app:layout_constraintStart_toStartOf="parent"
                            app:layout_constraintTop_toBottomOf="@+id/layout_personal_7">
                            <LinearLayout
                                android:layout_width="0dp"
                                android:layout_height="wrap_content"
                                android:layout_weight="1">
                                <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:background="@drawable/shape_fffad1e0_10_10_0_10"
                                    android:paddingHorizontal="6dp"
                                    android:paddingVertical="3dp"
                                    android:text="所在单位"
                                    android:textColor="#FF000000"
                                    android:textSize="12sp" />
                                <FrameLayout
                                    android:layout_width="wrap_content"
                                    android:layout_height="match_parent">
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:layout_gravity="center_vertical"
                                        app:textOverflowMode="@{4}"
                                        android:paddingHorizontal="6dp"
                                        android:text="@{selfBean.unit}"
                                        android:textColor="#FF000000"
                                        android:textSize="12sp" />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:layout_gravity="bottom"
                                        android:background="#FFFAD1E0" />
                                </FrameLayout>
                            </LinearLayout>
                            <LinearLayout
                                android:layout_width="0dp"
                                android:layout_height="wrap_content"
                                android:layout_weight="1"
                                android:layout_marginStart="10dp">
                                <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:background="@drawable/shape_fffad1e0_10_10_0_10"
                                    android:paddingHorizontal="6dp"
                                    android:paddingVertical="3dp"
                                    android:text="职务"
                                    android:textColor="#FF000000"
                                    android:textSize="12sp" />
                                <FrameLayout
                                    android:layout_width="wrap_content"
                                    android:layout_height="match_parent">
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:layout_gravity="center_vertical"
                                        app:textOverflowMode="@{4}"
                                        android:paddingHorizontal="6dp"
                                        android:text="@{selfBean.position}"
                                        android:textColor="#FF000000"
                                        android:textSize="12sp"
                                        tools:text="职务"
                                        />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:layout_gravity="bottom"
                                        android:background="#FFFAD1E0" />
                                </FrameLayout>
                            </LinearLayout>
                        </LinearLayout>
                    </androidx.constraintlayout.widget.ConstraintLayout>
                </androidx.cardview.widget.CardView>
            </LinearLayout>
        </ScrollView>
    </FrameLayout>
</layout>
app/src/main/res/layout/pop_operate_home_root_net.xml
@@ -15,81 +15,10 @@
        android:gravity="center_horizontal"
        >
        <TextView
            android:id="@+id/tv_first"
            android:layout_width="match_parent"
            android:layout_height="32dp"
            android:gravity="center"
            android:text="只显示第一代"
            android:textColor="#FF333333"
            android:textSize="12sp"
            />
        <View
            android:layout_width="match_parent"
            android:layout_height="0.3dp"
            android:background="#FF939393"
            />
        <TextView
            android:id="@+id/tv_second"
            android:layout_width="match_parent"
            android:layout_height="32dp"
            android:text="显示至第二代"
            android:gravity="center"
            android:textColor="#FF333333"
            android:textSize="12sp"
            />
        <View
            android:layout_width="match_parent"
            android:layout_height="0.3dp"
            android:background="#FF939393"
            />
        <TextView
            android:id="@+id/tv_third"
            android:layout_width="match_parent"
            android:layout_height="32dp"
            android:text="显示至第三代"
            android:gravity="center"
            android:textColor="#FF333333"
            android:textSize="12sp"
            />
        <View
            android:layout_width="match_parent"
            android:layout_height="0.3dp"
            android:background="#FF939393"
            />
        <TextView
            android:id="@+id/tv_all"
            android:layout_width="match_parent"
            android:layout_height="32dp"
            android:text="显示全部"
            android:gravity="center"
            android:textColor="#FF333333"
            android:textSize="12sp"
            />
        <View
            android:layout_width="match_parent"
            android:layout_height="0.3dp"
            android:background="#FF939393"
            />
        <TextView
            android:id="@+id/tv_family"
            android:layout_width="match_parent"
            android:layout_height="32dp"
            android:text="家谱"
            android:gravity="center"
            android:textColor="#FF333333"
            android:textSize="12sp"
            />
        <View
            android:layout_width="match_parent"
            android:layout_height="0.3dp"
            android:background="#FF939393"
            />
        <TextView
            android:id="@+id/tv_relation"
            android:layout_width="match_parent"
            android:layout_height="32dp"
            android:text="家族关系"
            android:gravity="center"
            android:textColor="#FF333333"
            android:textSize="12sp"
app_base/src/main/java/com/android/app_base/base/view/BaseActivity.java
@@ -5,6 +5,7 @@
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
@@ -30,6 +31,7 @@
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.Set;
/**
 *  Activity基类,所有的 Activity 都要继承此类
@@ -171,8 +173,10 @@
        viewModel.getMessageLivaData().observe(this, new Observer<String>() {
            @Override
            public void onChanged(String message) {
                if (!TextUtils.isEmpty(message)){
                ToastUtils.showShort(message);
            }
            }
        });
    }
app_base/src/main/java/com/android/app_base/base/view/BaseFragment.java
@@ -19,6 +19,7 @@
import com.android.app_base.base.StateViewEnum;
import com.android.app_base.base.action.ClickAction;
import com.android.app_base.base.viewmodel.BaseViewModel;
import com.blankj.utilcode.util.ToastUtils;
import com.gyf.immersionbar.ImmersionBar;
import com.hjq.bar.TitleBar;
@@ -181,6 +182,14 @@
                }
            }
        });
        viewModel.getMessageLivaData().observe(this, new Observer<String>() {
            @Override
            public void onChanged(String message) {
                if (message != null){
                    ToastUtils.showShort(message);
                }
            }
        });
    }
    /**
     * 缺省页等状态视图的更新