From 8aa3165449dd2757e016bdc43cfd5d111cd4c7a6 Mon Sep 17 00:00:00 2001
From: 张钢 <floatgang@163.com>
Date: 星期四, 12 九月 2024 14:54:06 +0800
Subject: [PATCH] 修改了家庭资产的显示问题

---
 app/src/main/java/com/application/zhangshi_app_android/ui/personal_center/PersonalCenterFragment.java |  252 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 252 insertions(+), 0 deletions(-)

diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/personal_center/PersonalCenterFragment.java b/app/src/main/java/com/application/zhangshi_app_android/ui/personal_center/PersonalCenterFragment.java
index 8fda600..43694a1 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/ui/personal_center/PersonalCenterFragment.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/personal_center/PersonalCenterFragment.java
@@ -1,28 +1,67 @@
 package com.application.zhangshi_app_android.ui.personal_center;
 
+import android.content.ComponentName;
+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.TipsDialog;
 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.android.app_base.widget.SwitchButton;
 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.application.zhangshi_app_android.ui.main.MainActivity;
+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 +73,8 @@
  */
 public class PersonalCenterFragment extends DLBaseFragment<FragmentPersonalCenterBinding,PersonalCenterFragmentViewModel> {
     private PopupWindow popupWindow;
+    private BaseDialog mWaitDialog;
+
 
     public PersonalCenterFragment() {
     }
@@ -92,6 +133,94 @@
 
             }
         });
+        binding.ivTakePhoto.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() {
+
+                            }
+                        });
+            }
+        });
+        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() {
+
+                            }
+                        });
+            }
+        });
+
+        binding.switchBtn.setChecked(UserManager.getInstance().getNightModeState());
+        binding.switchBtn.setOnCheckedChangeListener(new SwitchButton.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(SwitchButton button, boolean checked) {
+                if (checked == UserManager.getInstance().getNightModeState()) return;
+                new UIDialog.Builder(getContext())
+                        .setTitle("鎻愮ず")
+                        .setContent("鍒囨崲妯″紡闇�瑕侀噸鍚簲鐢ㄦ墠鑳界敓鏁堬紝鏄惁閲嶅惎锛�")
+                        .setConfirm("纭畾")
+                        .setCancel("鍙栨秷")
+                        .setListener(new UIDialog.OnListener() {
+                            @Override
+                            public void onConfirm(BaseDialog dialog) {
+                                UserManager.getInstance().saveNightModeState(checked);
+                                AppManager.getAppManager().restartApp(getContext());
+                            }
+
+                            @Override
+                            public void onCancel(BaseDialog dialog) {
+                                UIDialog.OnListener.super.onCancel(dialog);
+                                binding.switchBtn.setChecked(!checked);
+                            }
+                        })
+                        .setCancelable(false)
+                        .show();
+            }
+        });
     }
 
     @Override
@@ -128,4 +257,127 @@
     protected boolean isStatusBarImmersionEnabled() {
         return true;
     }
+
+    @Override
+    protected void dialogLoading() {
+        if (mWaitDialog == null) {
+            mWaitDialog = new WaitDialog.Builder(getSelfActivity())
+                    // 娑堟伅鏂囨湰鍙互涓嶇敤濉啓
+                    .setMessage("姝e湪涓婁紶澶村儚")
+                    .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);//瑁佸壀妗唎r鍥剧墖鎷栧姩
+        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));//鑷�夎鍓瘮渚嬶紝鍙梥etHideBottomControls褰卞搷鍙
+        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;
+    }
 }

--
Gitblit v1.9.1