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); } } }); } /** * 缺省页等状态视图的更新