修改上传图片逻辑

This commit is contained in:
2025-08-09 16:02:08 +08:00
parent ed7461261c
commit a8dcdf8b4b
13 changed files with 586 additions and 156 deletions

View File

@@ -58,6 +58,7 @@ dependencies {
api 'com.alibaba:arouter-api:1.4.1'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0'
implementation project(':tuicore')
kapt'com.alibaba:arouter-compiler:1.2.2'
api project(':lib_base')

View File

@@ -1,18 +1,28 @@
package com.yuyin.module_community.ui.fabu
import android.Manifest
import android.content.Context
import android.content.Intent
import android.text.Editable
import android.text.TextUtils
import android.text.TextWatcher
import android.view.View
import android.widget.ImageView
import androidx.recyclerview.widget.GridLayoutManager
import com.alibaba.android.arouter.facade.annotation.Route
import com.baoyz.actionsheet.ActionSheet
import com.bumptech.glide.Glide
import com.bumptech.glide.Priority
import com.bumptech.glide.request.RequestOptions
import com.luck.picture.lib.basic.PictureSelector
import com.luck.picture.lib.engine.ImageEngine
import com.luck.picture.lib.entity.LocalMedia
import com.luck.picture.lib.style.PictureSelectorStyle
import com.lzy.imagepicker.ImagePicker
import com.lzy.imagepicker.bean.ImageItem
import com.lzy.imagepicker.ui.ImageGridActivity
import com.tbruyelle.rxpermissions2.RxPermissions
import com.tencent.qcloud.tuicore.component.imageEngine.impl.GlideEngine
import com.yuyin.lib_base.App
import com.yuyin.lib_base.arouter.AroutUtil.COMMUNITY_FABU
import com.yuyin.lib_base.base.BaseDataBindingActivity
@@ -61,33 +71,45 @@ class SocialReleaseActivity :
override fun initView() {
adapter.setOnItemClickListener { adapter2, view, position ->
var mPermissionsChecker = PermissionsChecker(this@SocialReleaseActivity)
if (mPermissionsChecker!!.lacksPermissions(*permissionListTmp)) {
ll_quanxian.visibility = View.VISIBLE
} else {
ll_quanxian.visibility = View.GONE
}
// var mPermissionsChecker = PermissionsChecker(this@SocialReleaseActivity)
// if (mPermissionsChecker!!.lacksPermissions(*permissionListTmp)) {
// ll_quanxian.visibility = View.VISIBLE
// } else {
// ll_quanxian.visibility = View.GONE
// }
if (adapter.data[position].type == 2) {
var numss = 9 - (adapter.data.size - 1)
if (numss > 3) numss = 3
val rxPermissions = RxPermissions(this)
val finalNumss = numss
rxPermissions
.request(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE)
.subscribe { granted: Boolean ->
if (granted) { // Always true pre-M
// 跳转到相册
ll_quanxian.visibility = View.GONE
ImagePicker.getInstance().selectLimit = finalNumss
ImagePicker.getInstance().isMultiMode = true
ImagePicker.getInstance().isCrop = false
val intent = Intent(this, ImageGridActivity::class.java)
//显示选中的图片
startActivityForResult(intent, REQUEST_CODE_SELECT)
} else {
ll_quanxian.visibility = View.GONE
}
}
PictureSelector.create(this)
.openGallery(1)
.setImageEngine(TUIEngine())
.setSelectorUIStyle(PictureSelectorStyle())
.isGif(false)
.setMaxSelectNum(9)
.isPreviewImage(true)
.isDisplayCamera(true)
.isOriginalSkipCompress(true)
.forResult(REQUEST_CODE_SELECT) //结果回调onActivityResult code
// var numss = 9 - (adapter.data.size - 1)
// if (numss > 3) numss = 3
// val rxPermissions = RxPermissions(this)
// val finalNumss = numss
// rxPermissions
// .request(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE)
// .subscribe { granted: Boolean ->
// if (granted) { // Always true pre-M
// // 跳转到相册
// ll_quanxian.visibility = View.GONE
// ImagePicker.getInstance().selectLimit = finalNumss
// ImagePicker.getInstance().isMultiMode = true
// ImagePicker.getInstance().isCrop = false
// val intent = Intent(this, ImageGridActivity::class.java)
// //显示选中的图片
// startActivityForResult(intent, REQUEST_CODE_SELECT)
// } else {
// ll_quanxian.visibility = View.GONE
// }
// }
}
}
adapter.setOnItemChildClickListener { adapter, view, position ->
@@ -106,6 +128,58 @@ class SocialReleaseActivity :
}
}
}
class TUIEngine : ImageEngine {
override fun loadImage(context: Context, url: String, imageView: ImageView) {
GlideEngine.loadImage(imageView, url)
}
override fun loadImage(
context: Context?,
imageView: ImageView?,
url: String?,
maxWidth: Int,
maxHeight: Int
) {
if (imageView != null) {
Glide.with(context!!)
.load(url)
.apply(
RequestOptions()
.override(maxWidth, maxHeight)
.priority(Priority.HIGH)
.fitCenter()
)
.into(imageView)
}
}
override fun loadAlbumCover(context: Context, url: String, imageView: ImageView) {
GlideEngine.loadImage(imageView, url)
}
override fun loadGridImage(context: Context, url: String, imageView: ImageView) {
GlideEngine.loadImage(imageView, url)
}
override fun pauseRequests(context: Context) {
// GlideEngine中没有对应方法可以留空
}
override fun resumeRequests(context: Context) {
// GlideEngine中没有对应方法可以留空
}
fun clearMemory(context: Context) {
// 可以调用Glide的清理方法
Glide.get(context).clearMemory()
}
fun loadPreImage(context: Context, url: String, imageView: ImageView) {
GlideEngine.loadImage(imageView, url)
}
}
private fun uploadFile() {
val parts = java.util.ArrayList<MultipartBody.Part>()
@@ -248,18 +322,41 @@ class SocialReleaseActivity :
if (data == null) {
return
}
if (resultCode == ImagePicker.RESULT_CODE_ITEMS) {
if (resultCode == RESULT_OK && data != null) {
//添加图片返回
if (requestCode == REQUEST_CODE_SELECT) {
tempList.addAll(data.getSerializableExtra(ImagePicker.EXTRA_RESULT_ITEMS) as ArrayList<ImageItem>)
imageSize = tempList.size
if (tempList == null) {
return
}
adapter.data.clear()
// tempList.addAll(data.getSerializableExtra(ImagePicker.EXTRA_RESULT_ITEMS) as ArrayList<ImageItem>)
// imageSize = tempList.size
// if (tempList == null) {
// return
// }
// adapter.data.clear()
//
// for (i in tempList.indices) {
// imageListAll1.add(ImageItems(1, tempList[i]))
// }
//
// imageListAll2 = imageListAll1
// if (imageListAll2.size < maxSelectNum) {
// imageListAll2.add(ImageItems(2, ImageItem()))
// }
//
// adapter.setNewData(imageListAll2)
for (i in tempList.indices) {
imageListAll1.add(ImageItems(1, tempList[i]))
val localMediaList: ArrayList<LocalMedia> = PictureSelector.obtainSelectorList(data)
imageSize = localMediaList.size
adapter.data.clear()
// for (i in tempList.indices) {
// imageListAll1.add(ImageItems(1, tempList[i]))
// }
tempList.clear()
for (localMedia in localMediaList) {
val imageItem = ImageItem()
imageItem.path = localMedia.realPath
tempList.add(imageItem)
imageListAll1.add(ImageItems(1, imageItem))
}
imageListAll2 = imageListAll1
@@ -268,6 +365,8 @@ class SocialReleaseActivity :
}
adapter.setNewData(imageListAll2)
}
}
}