From e6014ef123350d5c0cadabe9c18e26b3d5a3c729 Mon Sep 17 00:00:00 2001
From: guoshen <3129367635@qq.com>
Date: 星期六, 29 六月 2024 15:41:25 +0800
Subject: [PATCH] Revert "Initial commit"
---
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