package com.ckkj.water.mine; import static android.app.Activity.RESULT_OK; import android.Manifest; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.alibaba.sdk.android.oss.ClientException; import com.alibaba.sdk.android.oss.ServiceException; import com.ckkj.water.base.entity.MineUserInfoBean; import com.esafirm.imagepicker.features.ImagePicker; import com.esafirm.imagepicker.model.Image; import com.ckkj.water.AppConfig; import com.ckkj.water.EventMessage; import com.ckkj.water.R; import com.ckkj.water.base.BaseFragment; import com.ckkj.water.base.inter.UploadCallback; import com.ckkj.water.databinding.MineFragmentBinding; import com.ckkj.water.login.LoginActivity; import com.ckkj.water.mine.mvp.MineContract; import com.ckkj.water.mine.mvp.MineImpl; import com.ckkj.water.mine.mvp.MinePresenter; import com.ckkj.water.network.BaseBean; import com.ckkj.water.utils.LubanCompressUtil; import com.ckkj.water.utils.PreviewFileUtil; import com.ckkj.water.utils.click.ClickUtil; import com.ckkj.water.utils.dataUtil.FileUtil; import com.ckkj.water.utils.manager.WaterUserInfoManager; import com.ckkj.water.utils.oss.OssUploadHelper; import com.ckkj.water.utils.show.ToastUtil; import com.lxj.xpopup.XPopup; import com.lxj.xpopup.interfaces.OnSelectListener; import com.yalantis.ucrop.UCrop; import java.io.File; import java.util.ArrayList; import java.util.List; import de.greenrobot.event.EventBus; import pub.devrel.easypermissions.EasyPermissions; /** * @author fengxiaoyang 新分支 * @date 2025/7/7 * @description TODO: 描述该类的作用 */ public class MineFragment extends BaseFragment implements MineContract.MineView { @Override public void initData(Bundle state) { viewBinding.includedTitle.imgBack.setVisibility(View.GONE); viewBinding.includedTitle.imgSetting.setVisibility(View.VISIBLE); ClickUtil.addClickPart(viewBinding.includedTitle.imgSetting, 50); ClickUtil.addClickPart(viewBinding.imgEdit, 50); viewBinding.includedTitle.tvTitle.setText("个人中心"); } @Override protected void onResumeInitData() { super.onResumeInitData(); if (AppConfig.USER_LOGIN) { // mPresenter.getUserinfo(); } else { viewBinding.tvDefaulBirthtime.setVisibility(View.VISIBLE); viewBinding.tvDefaulStar.setVisibility(View.VISIBLE); viewBinding.tvUserBirthTime.setVisibility(View.GONE); viewBinding.tvUserStar.setVisibility(View.GONE); } } @Override public MinePresenter createPresenter() { return new MinePresenter(new MineImpl()); } public void onClick(View v) { switch (v.getId()) { case R.id.img_user_head: if (!AppConfig.USER_LOGIN) { goTo(mContext, LoginActivity.class, null); return; } new XPopup.Builder(mContext).asBottomList("头像", new String[]{"上传头像", "查看大图"}, new OnSelectListener() { @Override public void onSelect(int position, String text) { switch (position) { case 0: String readPermission = Manifest.permission.READ_EXTERNAL_STORAGE; if (!hasRecordPermission(readPermission)) { // 没有权限,只在ACTION_DOWN时去申请 getPermissionRequst(readPermission, "相机、文件访问权限申请", "星语明灯需要您的授权,获取文件访问权限来修改头像", REQUEST_CODE_100); return; } else { imagePicker(1, REQUEST_CODE_100, MineFragment.this); } break; case 1: // String suffix = FileUtil.getFileSuffixWithQuestion(WaterUserInfoManager.getInstance().getUserInfo().getAvatar()); // PreviewFileUtil.previewFiles(mContext, suffix, WaterUserInfoManager.getInstance().getUserInfo().getAvatar()); break; } } }).show(); break; case R.id.img_setting: goTo(mContext, SettingsActivity.class, null); break; case R.id.img_edit://编辑出生日期 if (!AppConfig.USER_LOGIN) { goTo(mContext, LoginActivity.class, null); return; } // 发送EventBus消息,让MainActivity切换到FateFragment EventBus.getDefault().post(new EventMessage(EventMessage.SWITCH_TO_FATE_FRAGMENT)); break; case R.id.linear_tobe_vip: case R.id.lienar_share_be_vip: } } @Override public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { switch (requestCode) { case 100://头像 List images = ImagePicker.getImages(data); Uri sourceUri = Uri.fromFile(new File(images.get(0).getPath())); Uri destinationUri = Uri.fromFile(new File(mContext.getCacheDir(), "cropped_image.jpg")); UCrop.of(sourceUri, destinationUri) .withAspectRatio(1, 1) // 设置裁剪框比例,1:1 为正方形 .withMaxResultSize(1000, 1000) // 设置裁剪后的最大图片尺寸 .start(requireContext(), this); break; case UCrop.REQUEST_CROP: showLoadingDialog(); Uri resultUri = UCrop.getOutput(data); String filePath = resultUri.getPath(); if (!TextUtils.isEmpty(filePath)) { getCompressFile(new File(filePath)); } break; } } } private void getCompressFile(File file) { LubanCompressUtil.getInstance().getCompressFile(mContext, file, new LubanCompressUtil.CompressCallback() { @Override public void success(File file) { if (file != null) { if (file.exists()) { long fileSizeInBytes = file.length(); // 获取文件大小(字节) long fileSizeInMB = fileSizeInBytes / (1024 * 1024); // 转换为MB String fileName = file.getName(); if (fileSizeInMB > 5) { hideDialogLoading(); ToastUtil.showShort(mContext, "文件大小超出5M"); return; } if (!fileName.toLowerCase().endsWith(".png") && !fileName.toLowerCase().endsWith(".jpg") && !fileName.toLowerCase().endsWith(".jpeg")) { ToastUtil.showShort(mContext, "文件格式不正确"); hideDialogLoading(); return; } List filePath = new ArrayList<>(); filePath.add(file.getPath()); OssUploadHelper helper = new OssUploadHelper(mContext); helper.upload(AppConfig.UPLOAD_TYPE_200, fileName, filePath, new UploadCallback() { @Override public void onSuccess(List urls) { mContext.runOnUiThread(new Runnable() { @Override public void run() { if (!TextUtils.isEmpty(urls.get(0))) { // mPresenter.updateUserAvatar(urls.get(0)); } } }); } @Override public void onFailure(ClientException clientException, ServiceException serviceException) { } }); } else { ToastUtil.showShort(mContext, "文件不存在"); } } } @Override public void fail(String failMsg) { } }); } @Override public void onNetChange(int netModel) { } @Override public void showError(String message) { hideDialogLoading(); ToastUtil.showShort(mContext, message); } @Override public void logOut(BaseBean bean) { } @Override public void onPermissionsGranted(int requestCode, @NonNull List perms) { } @Override public void onPermissionsDenied(int requestCode, @NonNull List perms) { } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); hidePermissionDialog(); if (requestCode == REQUEST_CODE_100) { imagePicker(1, REQUEST_CODE_100, this); } } @Override public void getUserInfoSuccess(MineUserInfoBean bean) { } }