291 lines
10 KiB
Java
291 lines
10 KiB
Java
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<MineFragmentBinding, MinePresenter>
|
||
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(
|
||
getString(R.string.avatar),
|
||
new String[]{
|
||
getString(R.string.upload_avatar),
|
||
getString(R.string.view_full_image)}, 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,
|
||
getString(R.string.request_camera_storage_permission),
|
||
getString(R.string.avatar_permission_tips),
|
||
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<Image> 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<String> 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<String> 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<String> perms) {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void onPermissionsDenied(int requestCode, @NonNull List<String> 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) {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void updateUserInfoSuccess(BaseBean bean) {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void updateUserPasswordSuccess(BaseBean bean) {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void logOutSuccess(BaseBean bean) {
|
||
|
||
}
|
||
}
|