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 | 331 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 330 insertions(+), 1 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 80065c4..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,18 +1,81 @@ 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; /** * @author Ljj * @date 2023.03.15. 20:19 * @desc 涓汉涓績 Fragment */ -public class PersonalCenterFragment extends BaseFragment<FragmentPersonalCenterBinding,PersonalCenterFragmentViewModel> { +public class PersonalCenterFragment extends DLBaseFragment<FragmentPersonalCenterBinding,PersonalCenterFragmentViewModel> { + private PopupWindow popupWindow; + private BaseDialog mWaitDialog; + + public PersonalCenterFragment() { } @@ -39,16 +102,282 @@ @Override protected void initView() { + View view = View.inflate(getSelfActivity(),R.layout.pop_operate_person_center,null); + popupWindow = initPopUpWindow(view); + setOnClickListener( + view.findViewById(R.id.tv_basic_info), + view.findViewById(R.id.tv_change_login_bg) + ); + binding.ivOperate.setOnClickListener(v -> { + popupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(getSelfActivity(),85) +binding.ivOperate.getWidth(),0); + }); + + binding.tvLoginOut.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + new UIDialog.Builder(getSelfActivity()) + .setTitle("鎻愮ず") + .setContent("纭畾瑕侀��鍑虹櫥褰曞悧锛�") + .setConfirm("纭畾") + .setCancel("鍙栨秷") + .setListener(new UIDialog.OnListener() { + @Override + public void onConfirm(BaseDialog dialog) { + UserManager.getInstance().loginOut(); + AppManager.getAppManager().startActivity(new Intent(getSelfActivity(), LoginActivity.class)); + getSelfActivity().finish(); + } + }) + .show(); + + } + }); + 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 protected void initData() { + viewModel.getInfo(); + } + @Override + public void onResume() { + super.onResume(); + initData(); } @Override protected void initLiveDataObserve() { } + + @Override + public void onClick(View v) { + super.onClick(v); + int id = v.getId(); + if (id == R.id.tv_basic_info){ + popupWindow.dismiss(); + AppManager.getAppManager().startActivity(new Intent(getSelfActivity(),BasicInfoActivity.class) + .putExtra("bean",viewModel.getInfoLiveData().getValue())); + }else if (id == R.id.tv_change_login_bg){ + popupWindow.dismiss(); + AppManager.getAppManager().startActivity(LoginBgChangeActivity.class); + } + } + + @Override + 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