diff --git a/.idea/misc.xml b/.idea/misc.xml index 02fe1c1..3e9a0cf 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -18,6 +18,7 @@ + diff --git a/app/build.gradle b/app/build.gradle index 7acef0f..adc8148 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -74,7 +74,11 @@ dependencies { implementation 'org.ligboy.retrofit2:converter-fastjson-android:2.1.0' //图片选择器 - implementation 'com.github.donkingliang:ImageSelector:2.2.1' + implementation 'io.github.lucksiege:pictureselector:v3.10.2' + // image compress library (Not necessary) + implementation 'io.github.lucksiege:compress:v3.10.2' + // uCrop library + implementation 'io.github.lucksiege:ucrop:v3.10.2' //浮动按钮 implementation 'gdut.bsx:xdraglayout:1.1.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e5bc37..a06dae9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -66,6 +66,8 @@ android:resource="@xml/file_paths"/> + + images = data.getStringArrayListExtra( - ImageSelector.SELECT_RESULT); - String url = images.get(0); - Handler handler = new Handler(Looper.getMainLooper()){ - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - bundle = (Bundle) msg.obj; - if(bundle.getBoolean(UrlConstants.IS_IMG_UPLOAD_SUCCESS)){ - System.out.println("refreshData.................."); - getIntent().putExtras(bundle); - refreshData(); - //表示照片添加成功 - isSuccessCoursePhoto = true; - }else{ - Toast.makeText(CreateCourse.this, "修改失败", Toast.LENGTH_SHORT).show(); - } - } - }; - ImgUploadUtil.userImgUpload(bundle, handler, url, ModelFieldConstants.COURSE_PHOTO); - /** - * 是否是来自于相机拍照的图片, - * 只有本次调用相机拍出来的照片,返回时才为true。 - * 当为true时,图片返回的结果有且只有一张图片。 - */ - boolean isCameraImage = data.getBooleanExtra(ImageSelector.IS_CAMERA_IMAGE, false); - } - } - /** * 初始化活动 */ @@ -209,14 +180,33 @@ public class CreateCourse extends AppCompatActivity { refreshData(); + // 用于图片上传成功之后刷新界面 + imgUploadHandler = new Handler(Looper.getMainLooper()){ + @Override + public void handleMessage(@NonNull Message msg) { + super.handleMessage(msg); + bundle = (Bundle) msg.obj; + if(bundle.getBoolean(UrlConstants.IS_IMG_UPLOAD_SUCCESS)){ + System.out.println("refreshData.................."); + getIntent().putExtras(bundle); + refreshData(); + //表示照片添加成功 + isSuccessCoursePhoto = true; + }else{ + Toast.makeText(CreateCourse.this, "修改失败", Toast.LENGTH_SHORT).show(); + } + } + }; + setClickListener(); } private void refreshData(){ + bundle = getIntent().getExtras(); String courseImg = bundle.getString(ModelFieldConstants.COURSE_PHOTO); - if(courseImg != null){ + if(courseImg != null){ // 将图片加载出来 Glide.with(getApplicationContext()) .load(courseImg) .into(ivAddImg); @@ -233,109 +223,86 @@ public class CreateCourse extends AppCompatActivity { * 添加点击事件 */ private void setClickListener(){ - startDatePicker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener() { - @Override - public void onPositiveButtonClick(Long selection) { - String startFormDate = CommonUtils.stampToDate(String.valueOf(selection), "yyyy年MM月dd日"); - etStartTime.setText(startFormDate); - isSuccessCourseStartTime = true; - Bundle bundle1 = getIntent().getExtras(); - bundle1.putLong(ModelFieldConstants.START_TIME, selection); - getIntent().putExtras(bundle1); - } + startDatePicker.addOnPositiveButtonClickListener(selection -> { + String startFormDate = CommonUtils.stampToDate(String.valueOf(selection), "yyyy年MM月dd日"); + etStartTime.setText(startFormDate); + isSuccessCourseStartTime = true; + Bundle bundle1 = getIntent().getExtras(); + bundle1.putLong(ModelFieldConstants.START_TIME, selection); + getIntent().putExtras(bundle1); }); - endDatePicker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener() { - @Override - public void onPositiveButtonClick(Long selection) { - String endFormDate = CommonUtils.stampToDate(String.valueOf(selection), "yyyy年MM月dd日"); - etEndTime.setText(endFormDate); - isSuccessCourseEndTime = true; - Bundle bundle1 = getIntent().getExtras(); - bundle1.putLong(ModelFieldConstants.END_TIME, selection); - getIntent().putExtras(bundle1); - } + endDatePicker.addOnPositiveButtonClickListener(selection -> { + String endFormDate = CommonUtils.stampToDate(String.valueOf(selection), "yyyy年MM月dd日"); + etEndTime.setText(endFormDate); + isSuccessCourseEndTime = true; + Bundle bundle1 = getIntent().getExtras(); + bundle1.putLong(ModelFieldConstants.END_TIME, selection); + getIntent().putExtras(bundle1); }); //点击添加图片 - ivAddImg.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - //调用第三方开源库,单选并剪裁 - ImageSelector.builder() - .useCamera(false) // 设置是否使用拍照 - .setCrop(true) // 设置是否使用图片剪切功能。 - .setCropRatio(1.0f) // 图片剪切的宽高比,默认1.0f。宽固定为手机屏幕的宽。 - .setSingle(true) //设置是否单选 - .canPreview(true) //是否可以预览图片,默认为true - .start(CreateCourse.this, 100); // 打开相册 - } + ivAddImg.setOnClickListener(v -> { + // 调用第三方开源图片库 + PictureSelector.create(this) + .openGallery(SelectMimeType.ofImage()) + .setImageEngine(GlideEngine.createGlideEngine()) // 图片加载引擎 + .setMaxSelectNum(1)// 最大图片选择数量 int + .setImageSpanCount(4)// 每行显示个数 int + .setSelectionMode(SelectModeConfig.SINGLE)// 多选 or 单选 + .isPreviewImage(true)// 是否可预览图片 true or false + .isSelectZoomAnim(true)// 图片列表点击 缩放效果 默认true + .isGif(false) //是否显示gif文件 + .isWebp(false) //是否显示webp文件 + .isBmp(false) //是否显示bmp文件 + .isMaxSelectEnabledMask(true) //达到最大选择数是否开启禁选蒙层 + .forResult(new OnResultCallbackListener() { + @Override + public void onResult(ArrayList result) { // 选择图片后回调 + LocalMedia localMedia = result.get(0); + ImgUploadUtil.userImgUpload(bundle, imgUploadHandler, localMedia.getRealPath(), ModelFieldConstants.COURSE_PHOTO); + } + @Override + public void onCancel() { } // 取消 + }); }); //课程开始时间 - etStartTime.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if(!startDatePicker.isAdded()){ - startDatePicker.show(getSupportFragmentManager(), "Hello"); - } + etStartTime.setOnClickListener(v -> { + if(!startDatePicker.isAdded()){ + startDatePicker.show(getSupportFragmentManager(), "Hello"); } }); //课程结束时间 - etEndTime.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if(!endDatePicker.isAdded()){ - endDatePicker.show(getSupportFragmentManager(), "Hello"); - } - + etEndTime.setOnClickListener(v -> { + if(!endDatePicker.isAdded()){ + endDatePicker.show(getSupportFragmentManager(), "Hello"); } + }); //刷新当前时间 - etCreateTime.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - long currentDate = System.currentTimeMillis(); - String curFormDate = CommonUtils.stampToDate(String.valueOf(currentDate), "yyyy年MM月dd日"); - etCreateTime.setText(curFormDate); - isSuccessCourseCreateTime = true; - } + etCreateTime.setOnClickListener(v -> { + long currentDate = System.currentTimeMillis(); + String curFormDate = CommonUtils.stampToDate(String.valueOf(currentDate), "yyyy年MM月dd日"); + etCreateTime.setText(curFormDate); + isSuccessCourseCreateTime = true; }); //课程状态选择 - etStatus.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - String[] singleItems = {"未结课", "已结课"}; - int checkedItem = "未结课".equals(etStatus.getText().toString()) ? 0 : 1; - - MaterialAlertDialogBuilder materialAlertDialogBuilder = new MaterialAlertDialogBuilder(CreateCourse.this) - .setTitle("请选择课程授课状态") - .setNeutralButton(getString(R.string.cancel), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - - } - }) - .setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - etStatus.setText(singleItems[bundle.getInt("checkedItem")]); - } - }) - .setSingleChoiceItems(singleItems, checkedItem, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - bundle.putInt("checkedItem", which); - } - }); - materialAlertDialogBuilder.show(); - } + etStatus.setOnClickListener(v -> { + String[] singleItems = {"未结课", "已结课"}; + int checkedItem = "未结课".equals(Objects.requireNonNull(etStatus.getText()).toString()) ? 0 : 1; + + MaterialAlertDialogBuilder materialAlertDialogBuilder = new MaterialAlertDialogBuilder(CreateCourse.this) + .setTitle("请选择课程授课状态") + .setNeutralButton(getString(R.string.cancel), (dialog, which) -> { + + }) + .setPositiveButton(getString(R.string.ok), (dialog, which) -> + etStatus.setText(singleItems[bundle.getInt("checkedItem")])) + .setSingleChoiceItems(singleItems, checkedItem, (dialog, which) -> + bundle.putInt("checkedItem", which)); + materialAlertDialogBuilder.show(); }); //返回上一个活动 - abIvTitle.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); + abIvTitle.setOnClickListener(v -> finish()); } /** diff --git a/app/src/main/java/com/example/stlink/activitys/fragmentChild/activityUserInfo/UserInfoDetail.java b/app/src/main/java/com/example/stlink/activitys/fragmentChild/activityUserInfo/UserInfoDetail.java index ad79730..254fd87 100644 --- a/app/src/main/java/com/example/stlink/activitys/fragmentChild/activityUserInfo/UserInfoDetail.java +++ b/app/src/main/java/com/example/stlink/activitys/fragmentChild/activityUserInfo/UserInfoDetail.java @@ -1,17 +1,11 @@ package com.example.stlink.activitys.fragmentChild.activityUserInfo; -import android.Manifest; import android.annotation.SuppressLint; import android.content.Intent; -import android.content.pm.PackageManager; -import android.location.LocationManager; -import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; -import android.provider.Settings; -import android.view.View; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; @@ -22,19 +16,21 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import androidx.constraintlayout.widget.ConstraintLayout; -import androidx.core.content.ContextCompat; import com.bumptech.glide.Glide; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.bumptech.glide.request.RequestOptions; -import com.donkingliang.imageselector.utils.ImageSelector; import com.example.stlink.R; -import com.example.stlink.activitys.MapActivity; -import com.example.stlink.activitys.fragmentChild.activityTeaHome.CreateSign; +import com.example.stlink.configs.GlideEngine; import com.example.stlink.model.constants.ModelFieldConstants; import com.example.stlink.model.constants.UrlConstants; import com.example.stlink.utils.CommonUtils; import com.example.stlink.utils.activityUtil.ImgUploadUtil; +import com.luck.picture.lib.basic.PictureSelector; +import com.luck.picture.lib.config.SelectMimeType; +import com.luck.picture.lib.config.SelectModeConfig; +import com.luck.picture.lib.entity.LocalMedia; +import com.luck.picture.lib.interfaces.OnResultCallbackListener; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -66,9 +62,11 @@ public class UserInfoDetail extends AppCompatActivity { private Bundle bundle; + private Handler imgUploadHandler; + private ActivityResultLauncher intentActivityResultLauncher; - private ArrayList arrayList; +// private ArrayList arrayList; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { @@ -114,50 +112,27 @@ public class UserInfoDetail extends AppCompatActivity { assert data != null; getIntent().putExtras(data.getExtras()); refreshData(); - }else if (resultCode == 100){ - assert data != null; - ArrayList images = data.getStringArrayListExtra( - ImageSelector.SELECT_RESULT); - } }); refreshData(); - initOnClickListener(); - } - - //用于图片选择器选择图片之后的回调,来完成图片上传和刷新本地 - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (requestCode == 100 && data != null) { - //获取选择器返回的数据 - ArrayList images = data.getStringArrayListExtra( - ImageSelector.SELECT_RESULT); - String url = images.get(0); - Handler handler = new Handler(Looper.getMainLooper()){ - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - bundle = (Bundle) msg.obj; - if(bundle.getBoolean(UrlConstants.IS_IMG_UPLOAD_SUCCESS)){ - System.out.println("refreshData.................."); - getIntent().putExtras(bundle); - refreshData(); - }else{ - Toast.makeText(UserInfoDetail.this, "修改失败", Toast.LENGTH_SHORT).show(); - } + imgUploadHandler = new Handler(Looper.getMainLooper()){ + @Override + public void handleMessage(@NonNull Message msg) { + super.handleMessage(msg); + bundle = (Bundle) msg.obj; + if(bundle.getBoolean(UrlConstants.IS_IMG_UPLOAD_SUCCESS)){ + System.out.println("refreshData.................."); + getIntent().putExtras(bundle); + refreshData(); + }else{ + Toast.makeText(UserInfoDetail.this, "修改失败", Toast.LENGTH_SHORT).show(); } - }; - ImgUploadUtil.userImgUpload(bundle, handler, url, ModelFieldConstants.AVATAR); - /** - * 是否是来自于相机拍照的图片, - * 只有本次调用相机拍出来的照片,返回时才为true。 - * 当为true时,图片返回的结果有且只有一张图片。 - */ - boolean isCameraImage = data.getBooleanExtra(ImageSelector.IS_CAMERA_IMAGE, false); - } + } + }; + + initOnClickListener(); } private void refreshData(){ @@ -168,7 +143,7 @@ public class UserInfoDetail extends AppCompatActivity { String userNameMsg = (String) bundle.get(ModelFieldConstants.USER_NAME); String realNameMsg = (String) bundle.get(ModelFieldConstants.REAL_NAME); Long idNumberMsg = (Long) bundle.get(ModelFieldConstants.ID_NUMBER); - Boolean sexMsg = bundle.getBoolean(ModelFieldConstants.GENDER); + boolean sexMsg = bundle.getBoolean(ModelFieldConstants.GENDER); Long createTimeMsg = (Long) bundle.get(ModelFieldConstants.CREATE_TIME); String emailMsg = (String) bundle.get(ModelFieldConstants.EMAIL); String phoneMsg = (String) bundle.get(ModelFieldConstants.PHONE); @@ -181,7 +156,7 @@ public class UserInfoDetail extends AppCompatActivity { Glide.with(getApplicationContext()) .load(avatar) //添加圆角 - .apply(new RequestOptions().bitmapTransform(new RoundedCorners(30))) + .apply(RequestOptions.bitmapTransform(new RoundedCorners(30))) .into(ivHeadImg); } if(schoolName != null){ @@ -221,104 +196,92 @@ public class UserInfoDetail extends AppCompatActivity { */ public void initOnClickListener(){ //头像 - clHeadImg.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - //调用第三方开源库,单选并剪裁 - ImageSelector.builder() - .useCamera(true) // 设置是否使用拍照 - .setCrop(true) // 设置是否使用图片剪切功能。 - .setCropRatio(1.0f) // 图片剪切的宽高比,默认1.0f。宽固定为手机屏幕的宽。 - .setSingle(true) //设置是否单选 - .canPreview(true) //是否可以预览图片,默认为true - .start(UserInfoDetail.this, 100); // 打开相册 - } + clHeadImg.setOnClickListener(v -> { + // 调用第三方开源图片库 + PictureSelector.create(this) + .openGallery(SelectMimeType.ofImage()) + .setImageEngine(GlideEngine.createGlideEngine()) // 图片加载引擎 + .setMaxSelectNum(1)// 最大图片选择数量 int + .setImageSpanCount(4)// 每行显示个数 int + .setSelectionMode(SelectModeConfig.SINGLE)// 多选 or 单选 + .isPreviewImage(true)// 是否可预览图片 true or false + .isSelectZoomAnim(true)// 图片列表点击 缩放效果 默认true + .isGif(false) //是否显示gif文件 + .isWebp(false) //是否显示webp文件 + .isBmp(false) //是否显示bmp文件 + .isMaxSelectEnabledMask(true) //达到最大选择数是否开启禁选蒙层 + .forResult(new OnResultCallbackListener() { + @Override + public void onResult(ArrayList result) { + LocalMedia localMedia = result.get(0); + String path = localMedia.getRealPath(); + ImgUploadUtil.userImgUpload(bundle, imgUploadHandler, path, ModelFieldConstants.AVATAR); + } + + @Override + public void onCancel() { + + } + }); }); - clUserName.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Intent intent = new Intent(UserInfoDetail.this, ModifyUserInfo.class); - Bundle bundle = getIntent().getExtras(); - bundle.putString(ModelFieldConstants.TO_BE_MODIFY, ModelFieldConstants.USER_NAME); - intent.putExtras(bundle); + clUserName.setOnClickListener(v -> { + Intent intent = new Intent(UserInfoDetail.this, ModifyUserInfo.class); + Bundle bundle = getIntent().getExtras(); + bundle.putString(ModelFieldConstants.TO_BE_MODIFY, ModelFieldConstants.USER_NAME); + intent.putExtras(bundle); - intentActivityResultLauncher.launch(intent); - } + intentActivityResultLauncher.launch(intent); }); - clSchoolName.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Intent intent = new Intent(UserInfoDetail.this, ModifyUserInfo.class); - Bundle bundle = getIntent().getExtras(); - bundle.putString(ModelFieldConstants.TO_BE_MODIFY, ModelFieldConstants.COLLEGE_NAME); - intent.putExtras(bundle); - intentActivityResultLauncher.launch(intent); - } + clSchoolName.setOnClickListener(v -> { + Intent intent = new Intent(UserInfoDetail.this, ModifyUserInfo.class); + Bundle bundle = getIntent().getExtras(); + bundle.putString(ModelFieldConstants.TO_BE_MODIFY, ModelFieldConstants.COLLEGE_NAME); + intent.putExtras(bundle); + intentActivityResultLauncher.launch(intent); }); - clRealName.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Intent intent = new Intent(UserInfoDetail.this, ModifyUserInfo.class); - Bundle bundle = getIntent().getExtras(); - bundle.putString(ModelFieldConstants.TO_BE_MODIFY, ModelFieldConstants.REAL_NAME); - intent.putExtras(bundle); - intentActivityResultLauncher.launch(intent); - } + clRealName.setOnClickListener(v -> { + Intent intent = new Intent(UserInfoDetail.this, ModifyUserInfo.class); + Bundle bundle = getIntent().getExtras(); + bundle.putString(ModelFieldConstants.TO_BE_MODIFY, ModelFieldConstants.REAL_NAME); + intent.putExtras(bundle); + intentActivityResultLauncher.launch(intent); }); - clIdNumber.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Intent intent = new Intent(UserInfoDetail.this, ModifyUserInfo.class); - Bundle bundle = getIntent().getExtras(); - bundle.putString(ModelFieldConstants.TO_BE_MODIFY, ModelFieldConstants.ID_NUMBER); - intent.putExtras(bundle); - intentActivityResultLauncher.launch(intent); - } + clIdNumber.setOnClickListener(v -> { + Intent intent = new Intent(UserInfoDetail.this, ModifyUserInfo.class); + Bundle bundle = getIntent().getExtras(); + bundle.putString(ModelFieldConstants.TO_BE_MODIFY, ModelFieldConstants.ID_NUMBER); + intent.putExtras(bundle); + intentActivityResultLauncher.launch(intent); }); - clSex.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Intent intent = new Intent(UserInfoDetail.this, ModifyUserInfo.class); - Bundle bundle = getIntent().getExtras(); - bundle.putString(ModelFieldConstants.TO_BE_MODIFY, ModelFieldConstants.GENDER); - intent.putExtras(bundle); - intentActivityResultLauncher.launch(intent); - } + clSex.setOnClickListener(v -> { + Intent intent = new Intent(UserInfoDetail.this, ModifyUserInfo.class); + Bundle bundle = getIntent().getExtras(); + bundle.putString(ModelFieldConstants.TO_BE_MODIFY, ModelFieldConstants.GENDER); + intent.putExtras(bundle); + intentActivityResultLauncher.launch(intent); }); - clCreateTime.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - } + clCreateTime.setOnClickListener(v -> { }); - clEmail.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Intent intent = new Intent(UserInfoDetail.this, ModifyUserInfo.class); - Bundle bundle = getIntent().getExtras(); - bundle.putString(ModelFieldConstants.TO_BE_MODIFY, ModelFieldConstants.EMAIL); - intent.putExtras(bundle); - intentActivityResultLauncher.launch(intent); - } + clEmail.setOnClickListener(v -> { + Intent intent = new Intent(UserInfoDetail.this, ModifyUserInfo.class); + Bundle bundle = getIntent().getExtras(); + bundle.putString(ModelFieldConstants.TO_BE_MODIFY, ModelFieldConstants.EMAIL); + intent.putExtras(bundle); + intentActivityResultLauncher.launch(intent); }); - clPhone.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Intent intent = new Intent(UserInfoDetail.this, ModifyUserInfo.class); - Bundle bundle = getIntent().getExtras(); - bundle.putString(ModelFieldConstants.TO_BE_MODIFY, ModelFieldConstants.PHONE); - intent.putExtras(bundle); - intentActivityResultLauncher.launch(intent); - } + clPhone.setOnClickListener(v -> { + Intent intent = new Intent(UserInfoDetail.this, ModifyUserInfo.class); + Bundle bundle = getIntent().getExtras(); + bundle.putString(ModelFieldConstants.TO_BE_MODIFY, ModelFieldConstants.PHONE); + intent.putExtras(bundle); + intentActivityResultLauncher.launch(intent); }); //返回上一个活动,也就是个人信息部分 - abIvTitle.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Intent intent = new Intent(); - intent.putExtras(bundle); - setResult(RESULT_OK,intent); - finish(); - } + abIvTitle.setOnClickListener(v -> { + Intent intent = new Intent(); + intent.putExtras(bundle); + setResult(RESULT_OK,intent); + finish(); }); } diff --git a/app/src/main/java/com/example/stlink/configs/GlideEngine.java b/app/src/main/java/com/example/stlink/configs/GlideEngine.java new file mode 100644 index 0000000..6cbe0ca --- /dev/null +++ b/app/src/main/java/com/example/stlink/configs/GlideEngine.java @@ -0,0 +1,155 @@ +package com.example.stlink.configs; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.drawable.Drawable; +import android.widget.ImageView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.load.resource.bitmap.CenterCrop; +import com.bumptech.glide.load.resource.bitmap.RoundedCorners; +import com.bumptech.glide.request.target.CustomTarget; +import com.bumptech.glide.request.transition.Transition; +import com.example.stlink.R; +import com.luck.picture.lib.engine.ImageEngine; +import com.luck.picture.lib.interfaces.OnCallbackListener; +import com.luck.picture.lib.utils.ActivityCompatHelper; + +/** + * @author luck + * @date 2019-11-13 17:02 + * @describe Glide加载引擎 + */ +public class GlideEngine implements ImageEngine { + + /** + * 加载图片 + * + * @param context 上下文 + * @param url 资源url + * @param imageView 图片承载控件 + */ + @Override + public void loadImage(@NonNull Context context, @NonNull String url, @NonNull ImageView imageView) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return; + } + Glide.with(context) + .load(url) + .into(imageView); + } + + /** + * 加载指定url并返回bitmap + * + * @param context 上下文 + * @param url 资源url + * @param maxWidth 资源最大加载尺寸 + * @param maxHeight 资源最大加载尺寸 + * @param call 回调接口 + */ + @Override + public void loadImageBitmap(@NonNull Context context, @NonNull String url, int maxWidth, int maxHeight, OnCallbackListener call) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return; + } + Glide.with(context) + .asBitmap() + .override(maxWidth, maxHeight) + .load(url) + .into(new CustomTarget() { + + @Override + public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition transition) { + if (call != null) { + call.onCall(resource); + } + } + + @Override + public void onLoadFailed(@Nullable Drawable errorDrawable) { + if (call != null) { + call.onCall(null); + } + } + + @Override + public void onLoadCleared(@Nullable Drawable placeholder) { + + } + + }); + } + + /** + * 加载相册目录封面 + * + * @param context 上下文 + * @param url 图片路径 + * @param imageView 承载图片ImageView + */ + @Override + public void loadAlbumCover(@NonNull Context context, @NonNull String url, @NonNull ImageView imageView) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return; + } + Glide.with(context) + .asBitmap() + .load(url) + .override(180, 180) + .sizeMultiplier(0.5f) + .transform(new CenterCrop(), new RoundedCorners(8)) + .placeholder(R.drawable.ps_image_placeholder) + .into(imageView); + } + + + /** + * 加载图片列表图片 + * + * @param context 上下文 + * @param url 图片路径 + * @param imageView 承载图片ImageView + */ + @Override + public void loadGridImage(@NonNull Context context, @NonNull String url, @NonNull ImageView imageView) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return; + } + Glide.with(context) + .load(url) + .override(200, 200) + .centerCrop() + .placeholder(R.drawable.ps_image_placeholder) + .into(imageView); + } + + @Override + public void pauseRequests(Context context) { + Glide.with(context).pauseRequests(); + } + + @Override + public void resumeRequests(Context context) { + Glide.with(context).resumeRequests(); + } + + private GlideEngine() { + } + + private static GlideEngine instance; + + public static GlideEngine createGlideEngine() { + if (null == instance) { + synchronized (GlideEngine.class) { + if (null == instance) { + instance = new GlideEngine(); + } + } + } + return instance; + } +} diff --git a/app/src/main/java/com/example/stlink/utils/activityUtil/ImgUploadUtil.java b/app/src/main/java/com/example/stlink/utils/activityUtil/ImgUploadUtil.java index 715030c..f52ae0e 100644 --- a/app/src/main/java/com/example/stlink/utils/activityUtil/ImgUploadUtil.java +++ b/app/src/main/java/com/example/stlink/utils/activityUtil/ImgUploadUtil.java @@ -1,6 +1,5 @@ package com.example.stlink.utils.activityUtil; -import android.graphics.ColorSpace; import android.os.Bundle; import android.os.Handler; import android.os.Message; @@ -8,7 +7,6 @@ import android.text.TextUtils; import androidx.annotation.Nullable; -//import com.example.stlink.config.adapter.ImageAdapter; import com.example.stlink.model.constants.ModelFieldConstants; import com.example.stlink.model.constants.UrlConstants; import com.example.stlink.model.response.BaseResponse; @@ -34,35 +32,32 @@ public class ImgUploadUtil { mBundle.getBoolean(UrlConstants.IS_IMG_UPLOAD_SUCCESS, false); - new Thread(new Runnable() { - @Override - public void run() { - File file = null; - if (!TextUtils.isEmpty(path)) { - file = new File(path); - } - new PostFileHttpUtils() { - @Override - public void nextMethod(BaseResponse baseResponse) { - if(ModelFieldConstants.AVATAR.equals(mImgId)){ - userImgUploadNext(baseResponse); - }else if (ModelFieldConstants.COURSE_PHOTO.equals(mImgId)){ - Message message = new Message(); - mBundle.putString(mImgId, (String) baseResponse.getData()); - mBundle.putBoolean(UrlConstants.IS_IMG_UPLOAD_SUCCESS, true); - message.obj = mBundle; - mHandler.sendMessage(message); - } - } - - @Override - public void failedMethod(BaseResponse baseResponse) { + new Thread(() -> { + File file = null; + if (path != null && !TextUtils.isEmpty(path)) { + file = new File(path); + } + new PostFileHttpUtils() { + @Override + public void nextMethod(BaseResponse baseResponse) { + if(ModelFieldConstants.AVATAR.equals(mImgId)){ + userImgUploadNext(baseResponse); + }else if (ModelFieldConstants.COURSE_PHOTO.equals(mImgId)){ Message message = new Message(); - System.out.println("上传失败......................."); - handler.sendMessage(message); + mBundle.putString(mImgId, (String) baseResponse.getData()); + mBundle.putBoolean(UrlConstants.IS_IMG_UPLOAD_SUCCESS, true); + message.obj = mBundle; + mHandler.sendMessage(message); } - }.FileUpload(UrlConstants.FILE_UPLOAD, file); - } + } + + @Override + public void failedMethod(BaseResponse baseResponse) { + Message message = new Message(); + System.out.println("上传失败......................."); + handler.sendMessage(message); + } + }.FileUpload(UrlConstants.FILE_UPLOAD, file); }).start(); } diff --git a/app/src/main/res/drawable/ps_image_placeholder.xml b/app/src/main/res/drawable/ps_image_placeholder.xml new file mode 100644 index 0000000..8c63cb1 --- /dev/null +++ b/app/src/main/res/drawable/ps_image_placeholder.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + \ No newline at end of file