18034727885
2026-06-16 0957c06a142d516f1f89b3f688bfb590fde59e92
优化图片选择器
4个文件已添加
12个文件已修改
343 ■■■■■ 已修改文件
app/src/main/java/com/xw/yunwei/ui/task/accident/handle/AccidentProcessActivity.kt 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/task/create/CreateTaskActivity.kt 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/task/normal/NormalTaskDetailActivity.kt 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/user/mine/upload/CertUploadActivity.kt 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/work/car/detail/operations/charge/ChargeCarActivity.kt 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/work/car/detail/operations/check/CheckCarActivity.kt 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/work/car/detail/operations/clean/CleanCarActivity.kt 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/work/car/detail/operations/maintain/MaintainCarActivity.kt 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/work/car/detail/operations/repair/RepairCarActivity.kt 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/work/checkInMission/viewmodel/CruiseCheckInOperationViewModel.kt 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/work/site/viewmodel/SiteErrorUploadVM.kt 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/utils/PictureSelectorFactory.kt 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/ps_demo_blue_num_normal.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/ps_demo_blue_num_selected.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/ps_demo_blue_num_selector.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values/colors.xml 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/task/accident/handle/AccidentProcessActivity.kt
@@ -4,9 +4,7 @@
import android.net.Uri
import androidx.recyclerview.widget.GridLayoutManager
import com.blankj.utilcode.util.UriUtils
import com.luck.picture.lib.basic.PictureSelector
import com.luck.picture.lib.config.PictureMimeType
import com.luck.picture.lib.config.SelectMimeType
import com.luck.picture.lib.entity.LocalMedia
import com.luck.picture.lib.interfaces.OnResultCallbackListener
import com.xw.common.CommonDialog
@@ -15,11 +13,10 @@
import com.xw.common.base.ImageEventListener
import com.xw.common.base.ImageSelectAdapter
import com.xw.common.base.ShowImgListDialog
import com.xw.common.utils.GlideEngine
import com.xw.common.utils.PictureCompressEngine
import com.xw.yunwei.BR
import com.xw.yunwei.BaseBusinessActivity
import com.xw.yunwei.databinding.ActivityAccidentProcessBinding
import com.xw.yunwei.utils.PictureSelectorFactory
/**
 * 事故处理页面
@@ -129,15 +126,11 @@
    // 进入图库
    @SuppressLint("SourceLockedOrientationActivity")
    private fun enterGallery() {
        PictureSelector.create(this)
            .openGallery(SelectMimeType.ofImage())
            .setImageEngine(GlideEngine.createGlideEngine())
            .setMaxSelectNum(viewModel.maxSizes[viewModel.operateIndex] - viewModel.adapters[viewModel.operateIndex].data.size)
            .setImageSpanCount(4)
            .isPreviewImage(true)
            .isDisplayCamera(false)
            .setCompressEngine(PictureCompressEngine())
            .forResult(resultCallbackListener)
        PictureSelectorFactory.enterGallery(
            this,
            viewModel.maxSizes[viewModel.operateIndex] - viewModel.adapters[viewModel.operateIndex].data.size,
            resultCallbackListener
        )
    }
    /**
@@ -145,10 +138,7 @@
     */
    // 拍照
    private fun takeAPhotograph() {
        PictureSelector.create(this)
            .openCamera(SelectMimeType.ofImage())
            .setCompressEngine(PictureCompressEngine())
            .forResultActivity(resultCallbackListener)
        PictureSelectorFactory.takeAPhotograph(this,resultCallbackListener)
    }
    /**
app/src/main/java/com/xw/yunwei/ui/task/create/CreateTaskActivity.kt
@@ -14,9 +14,7 @@
import com.afollestad.materialdialogs.customview.getCustomView
import com.amap.api.location.AMapLocation
import com.blankj.utilcode.util.UriUtils
import com.luck.picture.lib.basic.PictureSelector
import com.luck.picture.lib.config.PictureMimeType
import com.luck.picture.lib.config.SelectMimeType
import com.luck.picture.lib.entity.LocalMedia
import com.luck.picture.lib.interfaces.OnResultCallbackListener
import com.xw.common.CommonDialog
@@ -26,12 +24,9 @@
import com.xw.common.base.ImageSelectAdapter
import com.xw.common.base.ShowImgListDialog
import com.xw.common.utils.BindUtils.getResColor
import com.xw.common.utils.BindUtils.getUrl
import com.xw.common.utils.GlideEngine
import com.xw.common.utils.GpsHelper
import com.xw.common.utils.KeyPreferences
import com.xw.common.utils.MMKVManager
import com.xw.common.utils.PictureCompressEngine
import com.xw.common.utils.ToastUtilCommon
import com.xw.common.viewAdapter.ImageDefault
import com.xw.common.viewAdapter.ViewAdapter
@@ -42,6 +37,7 @@
import com.xw.yunwei.model.CacheAccidentModel
import com.xw.yunwei.model.CarModel
import com.xw.yunwei.utils.DialogFactory
import com.xw.yunwei.utils.PictureSelectorFactory
/**
 * 事故上报页面
@@ -186,15 +182,11 @@
    // 进入图库
    @SuppressLint("SourceLockedOrientationActivity")
    private fun enterGallery() {
        PictureSelector.create(this)
            .openGallery(SelectMimeType.ofImage())
            .setImageEngine(GlideEngine.createGlideEngine())
            .setMaxSelectNum(viewModel.maxSize - viewModel.adapter.data.size)
            .setImageSpanCount(4)
            .isPreviewImage(true)
            .isDisplayCamera(false)
            .setCompressEngine(PictureCompressEngine())
            .forResult(resultCallbackListener)
        PictureSelectorFactory.enterGallery(
            this,
            viewModel.maxSize - viewModel.adapter.data.size,
            resultCallbackListener
        )
    }
    /**
@@ -202,10 +194,7 @@
     */
    // 拍照
    private fun takeAPhotograph() {
        PictureSelector.create(this)
            .openCamera(SelectMimeType.ofImage())
            .setCompressEngine(PictureCompressEngine())
            .forResultActivity(resultCallbackListener)
        PictureSelectorFactory.takeAPhotograph(this,resultCallbackListener)
    }
    /**
app/src/main/java/com/xw/yunwei/ui/task/normal/NormalTaskDetailActivity.kt
@@ -9,9 +9,7 @@
import com.amap.api.location.AMapLocation
import com.amap.api.maps.model.LatLng
import com.blankj.utilcode.util.UriUtils
import com.luck.picture.lib.basic.PictureSelector
import com.luck.picture.lib.config.PictureMimeType
import com.luck.picture.lib.config.SelectMimeType
import com.luck.picture.lib.entity.LocalMedia
import com.luck.picture.lib.interfaces.OnResultCallbackListener
import com.xw.common.CommonDialog
@@ -21,16 +19,15 @@
import com.xw.common.base.ShowImgListDialog
import com.xw.common.custom.BatteryView.Companion.getBatteryColorByBatteryLife
import com.xw.common.utils.BindUtils.getUrls
import com.xw.common.utils.GlideEngine
import com.xw.common.utils.GpsHelper
import com.xw.common.utils.GpsHelper.Companion.navigate
import com.xw.common.utils.PictureCompressEngine
import com.xw.common.utils.ToastUtilCommon
import com.xw.yunwei.BR
import com.xw.yunwei.BaseBusinessActivity
import com.xw.yunwei.databinding.ActivityNormalTaskDetailBinding
import com.xw.yunwei.model.TaskNormalModel
import com.xw.yunwei.ui.work.car.detail.operations.charge.ChargeCarActivity
import com.xw.yunwei.utils.PictureSelectorFactory
/**
 * 常规任务详情页面
@@ -368,23 +365,16 @@
    // 进入图库
    @SuppressLint("SourceLockedOrientationActivity")
    private fun enterGallery() {
        PictureSelector.create(this)
            .openGallery(SelectMimeType.ofImage())
            .setImageEngine(GlideEngine.createGlideEngine())
            .setMaxSelectNum(viewModel.maxSize - viewModel.adapterCanEdit.data.size)
            .setImageSpanCount(4)
            .isPreviewImage(true)
            .isDisplayCamera(false)
            .setCompressEngine(PictureCompressEngine())
            .forResult(resultCallbackListener)
        PictureSelectorFactory.enterGallery(
            this,
            viewModel.maxSize - viewModel.adapterCanEdit.data.size,
            resultCallbackListener
        )
    }
    // 拍照
    private fun takeAPhotograph() {
        PictureSelector.create(this)
            .openCamera(SelectMimeType.ofImage())
            .setCompressEngine(PictureCompressEngine())
            .forResultActivity(resultCallbackListener)
        PictureSelectorFactory.takeAPhotograph(this, resultCallbackListener)
    }
    /** 图片选择结果回调 */
app/src/main/java/com/xw/yunwei/ui/user/mine/upload/CertUploadActivity.kt
@@ -3,22 +3,18 @@
import android.annotation.SuppressLint
import android.net.Uri
import android.view.View
import androidx.core.view.isVisible
import com.blankj.utilcode.util.UriUtils
import com.luck.picture.lib.basic.PictureSelector
import com.luck.picture.lib.config.PictureMimeType
import com.luck.picture.lib.config.SelectMimeType
import com.luck.picture.lib.entity.LocalMedia
import com.luck.picture.lib.interfaces.OnResultCallbackListener
import com.xw.common.CommonDialog
import com.xw.common.base.ShowImgListDialog
import com.xw.common.utils.GlideEngine
import com.xw.common.utils.PictureCompressEngine
import com.xw.yunwei.BR
import com.xw.yunwei.BaseBusinessActivity
import com.xw.yunwei.R
import com.xw.yunwei.databinding.ActivityCertUploadBinding
import com.xw.yunwei.extension.colorIdToColorValue
import com.xw.yunwei.utils.PictureSelectorFactory
/**
 * 证件上传
@@ -170,23 +166,12 @@
    // 进入图库
    @SuppressLint("SourceLockedOrientationActivity")
    private fun enterGallery() {
        PictureSelector.create(this)
            .openGallery(SelectMimeType.ofImage())
            .setImageEngine(GlideEngine.createGlideEngine())
            .setMaxSelectNum(1)
            .setImageSpanCount(4)
            .isPreviewImage(true)
            .isDisplayCamera(false)
            .setCompressEngine(PictureCompressEngine())
            .forResult(resultCallbackListener)
        PictureSelectorFactory.enterGallery(this,1,resultCallbackListener)
    }
    // 拍照
    private fun takeAPhotograph() {
        PictureSelector.create(this)
            .openCamera(SelectMimeType.ofImage())
            .setCompressEngine(PictureCompressEngine())
            .forResultActivity(resultCallbackListener)
        PictureSelectorFactory.takeAPhotograph(this,resultCallbackListener)
    }
    private var resultCallbackListener = object : OnResultCallbackListener<LocalMedia> {
app/src/main/java/com/xw/yunwei/ui/work/car/detail/operations/charge/ChargeCarActivity.kt
@@ -5,9 +5,7 @@
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.GridLayoutManager
import com.blankj.utilcode.util.UriUtils
import com.luck.picture.lib.basic.PictureSelector
import com.luck.picture.lib.config.PictureMimeType
import com.luck.picture.lib.config.SelectMimeType
import com.luck.picture.lib.entity.LocalMedia
import com.luck.picture.lib.interfaces.OnResultCallbackListener
import com.xw.common.CommonDialog
@@ -19,8 +17,6 @@
import com.xw.common.custom.SlideButtonView.Companion.DIRECTION_RIGHT
import com.xw.common.utils.BindUtils.getResColor
import com.xw.common.utils.BindUtils.getUrls
import com.xw.common.utils.GlideEngine
import com.xw.common.utils.PictureCompressEngine
import com.xw.common.viewAdapter.ImageDefault
import com.xw.common.viewAdapter.ViewAdapter
import com.xw.yunwei.BR
@@ -28,6 +24,7 @@
import com.xw.yunwei.R
import com.xw.yunwei.databinding.ActivityCarChargeBinding
import com.xw.yunwei.model.CarModel
import com.xw.yunwei.utils.PictureSelectorFactory
/**
 * 车辆充电
@@ -178,23 +175,16 @@
    // 进入图库
    @SuppressLint("SourceLockedOrientationActivity")
    private fun enterGallery() {
        PictureSelector.create(this)
            .openGallery(SelectMimeType.ofImage())
            .setImageEngine(GlideEngine.createGlideEngine())
            .setMaxSelectNum(viewModel.maxSize - viewModel.adapterNow.data.size)
            .setImageSpanCount(4)
            .isPreviewImage(true)
            .isDisplayCamera(false)
            .setCompressEngine(PictureCompressEngine())
            .forResult(resultCallbackListener)
        PictureSelectorFactory.enterGallery(
            this,
            viewModel.maxSize - viewModel.adapterNow.data.size,
            resultCallbackListener
        )
    }
    // 拍照
    private fun takeAPhotograph() {
        PictureSelector.create(this)
            .openCamera(SelectMimeType.ofImage())
            .setCompressEngine(PictureCompressEngine())
            .forResultActivity(resultCallbackListener)
        PictureSelectorFactory.takeAPhotograph(this,resultCallbackListener)
    }
    private var resultCallbackListener = object : OnResultCallbackListener<LocalMedia> {
app/src/main/java/com/xw/yunwei/ui/work/car/detail/operations/check/CheckCarActivity.kt
@@ -4,9 +4,7 @@
import android.net.Uri
import androidx.recyclerview.widget.GridLayoutManager
import com.blankj.utilcode.util.UriUtils
import com.luck.picture.lib.basic.PictureSelector
import com.luck.picture.lib.config.PictureMimeType
import com.luck.picture.lib.config.SelectMimeType
import com.luck.picture.lib.entity.LocalMedia
import com.luck.picture.lib.interfaces.OnResultCallbackListener
import com.xw.common.CommonDialog
@@ -15,9 +13,6 @@
import com.xw.common.base.ImageSelectAdapter
import com.xw.common.base.ShowImgListDialog
import com.xw.common.custom.SlideSwitchView.OnStateChangeListener
import com.xw.common.utils.BindUtils.getUrl
import com.xw.common.utils.GlideEngine
import com.xw.common.utils.PictureCompressEngine
import com.xw.common.utils.ToastUtilCommon
import com.xw.common.viewAdapter.ImageDefault
import com.xw.common.viewAdapter.ViewAdapter
@@ -26,11 +21,9 @@
import com.xw.yunwei.Constants.user
import com.xw.yunwei.R
import com.xw.yunwei.databinding.ActivityCarCheckBinding
import com.xw.yunwei.model.CarCheckModel
import com.xw.yunwei.model.CarModel
import com.xw.yunwei.model.CheckRecordModel
import java.util.ArrayList
import kotlin.text.ifEmpty
import com.xw.yunwei.utils.PictureSelectorFactory
/**
 * 车辆检测
@@ -222,23 +215,16 @@
    // 进入图库
    @SuppressLint("SourceLockedOrientationActivity")
    private fun enterGallery() {
        PictureSelector.create(this)
            .openGallery(SelectMimeType.ofImage())
            .setImageEngine(GlideEngine.createGlideEngine())
            .setMaxSelectNum(viewModel.maxSizes[viewModel.operateIndex] - viewModel.adapters[viewModel.operateIndex].data.size)
            .setImageSpanCount(4)
            .isPreviewImage(true)
            .isDisplayCamera(false)
            .setCompressEngine(PictureCompressEngine())
            .forResult(resultCallbackListener)
        PictureSelectorFactory.enterGallery(
            this,
            viewModel.maxSizes[viewModel.operateIndex] - viewModel.adapters[viewModel.operateIndex].data.size,
            resultCallbackListener
        )
    }
    // 拍照
    private fun takeAPhotograph() {
        PictureSelector.create(this)
            .openCamera(SelectMimeType.ofImage())
            .setCompressEngine(PictureCompressEngine())
            .forResultActivity(resultCallbackListener)
        PictureSelectorFactory.takeAPhotograph(this,resultCallbackListener)
    }
    private var resultCallbackListener = object : OnResultCallbackListener<LocalMedia> {
app/src/main/java/com/xw/yunwei/ui/work/car/detail/operations/clean/CleanCarActivity.kt
@@ -4,9 +4,7 @@
import android.net.Uri
import androidx.recyclerview.widget.GridLayoutManager
import com.blankj.utilcode.util.UriUtils
import com.luck.picture.lib.basic.PictureSelector
import com.luck.picture.lib.config.PictureMimeType
import com.luck.picture.lib.config.SelectMimeType
import com.luck.picture.lib.entity.LocalMedia
import com.luck.picture.lib.interfaces.OnResultCallbackListener
import com.xw.common.CommonDialog
@@ -14,8 +12,6 @@
import com.xw.common.base.ImageEventListener
import com.xw.common.base.ImageSelectAdapter
import com.xw.common.base.ShowImgListDialog
import com.xw.common.utils.GlideEngine
import com.xw.common.utils.PictureCompressEngine
import com.xw.common.viewAdapter.ImageDefault
import com.xw.common.viewAdapter.ViewAdapter
import com.xw.yunwei.BR
@@ -23,6 +19,7 @@
import com.xw.yunwei.R
import com.xw.yunwei.databinding.ActivityCarCleanBinding
import com.xw.yunwei.model.CarModel
import com.xw.yunwei.utils.PictureSelectorFactory
/**
 * 车身清洁
@@ -95,23 +92,16 @@
    // 进入图库
    @SuppressLint("SourceLockedOrientationActivity")
    private fun enterGallery() {
        PictureSelector.create(this)
            .openGallery(SelectMimeType.ofImage())
            .setImageEngine(GlideEngine.createGlideEngine())
            .setMaxSelectNum(viewModel.maxSize - viewModel.adapter.data.size)
            .setImageSpanCount(4)
            .isPreviewImage(true)
            .isDisplayCamera(false)
            .setCompressEngine(PictureCompressEngine())
            .forResult(resultCallbackListener)
        PictureSelectorFactory.enterGallery(
            this,
            viewModel.maxSize - viewModel.adapter.data.size,
            resultCallbackListener
        )
    }
    // 拍照
    private fun takeAPhotograph() {
        PictureSelector.create(this)
            .openCamera(SelectMimeType.ofImage())
            .setCompressEngine(PictureCompressEngine())
            .forResultActivity(resultCallbackListener)
        PictureSelectorFactory.takeAPhotograph(this,resultCallbackListener)
    }
    private var resultCallbackListener = object : OnResultCallbackListener<LocalMedia> {
app/src/main/java/com/xw/yunwei/ui/work/car/detail/operations/maintain/MaintainCarActivity.kt
@@ -4,9 +4,7 @@
import android.net.Uri
import androidx.recyclerview.widget.GridLayoutManager
import com.blankj.utilcode.util.UriUtils
import com.luck.picture.lib.basic.PictureSelector
import com.luck.picture.lib.config.PictureMimeType
import com.luck.picture.lib.config.SelectMimeType
import com.luck.picture.lib.entity.LocalMedia
import com.luck.picture.lib.interfaces.OnResultCallbackListener
import com.xw.common.CommonDialog
@@ -14,14 +12,13 @@
import com.xw.common.base.ImageEventListener
import com.xw.common.base.ImageSelectAdapter
import com.xw.common.base.ShowImgListDialog
import com.xw.common.utils.GlideEngine
import com.xw.common.utils.PictureCompressEngine
import com.xw.yunwei.BR
import com.xw.yunwei.BaseBusinessActivity
import com.xw.yunwei.Constants.user
import com.xw.yunwei.databinding.ActivityCarMaintainBinding
import com.xw.yunwei.model.CarModel
import com.xw.yunwei.model.MaintainRecordModel
import com.xw.yunwei.utils.PictureSelectorFactory
/**
 * 车辆整备
@@ -128,23 +125,16 @@
    // 进入图库
    @SuppressLint("SourceLockedOrientationActivity")
    private fun enterGallery() {
        PictureSelector.create(this)
            .openGallery(SelectMimeType.ofImage())
            .setImageEngine(GlideEngine.createGlideEngine())
            .setMaxSelectNum(viewModel.maxSizes[viewModel.operateIndex] - viewModel.adapters[viewModel.operateIndex].data.size)
            .setImageSpanCount(4)
            .isPreviewImage(true)
            .isDisplayCamera(false)
            .setCompressEngine(PictureCompressEngine())
            .forResult(resultCallbackListener)
        PictureSelectorFactory.enterGallery(
            this,
            viewModel.maxSizes[viewModel.operateIndex] - viewModel.adapters[viewModel.operateIndex].data.size,
            resultCallbackListener
        )
    }
    // 拍照
    private fun takeAPhotograph() {
        PictureSelector.create(this)
            .openCamera(SelectMimeType.ofImage())
            .setCompressEngine(PictureCompressEngine())
            .forResultActivity(resultCallbackListener)
        PictureSelectorFactory.takeAPhotograph(this,resultCallbackListener)
    }
    private var resultCallbackListener = object : OnResultCallbackListener<LocalMedia> {
app/src/main/java/com/xw/yunwei/ui/work/car/detail/operations/repair/RepairCarActivity.kt
@@ -4,9 +4,7 @@
import android.net.Uri
import androidx.recyclerview.widget.GridLayoutManager
import com.blankj.utilcode.util.UriUtils
import com.luck.picture.lib.basic.PictureSelector
import com.luck.picture.lib.config.PictureMimeType
import com.luck.picture.lib.config.SelectMimeType
import com.luck.picture.lib.entity.LocalMedia
import com.luck.picture.lib.interfaces.OnResultCallbackListener
import com.xw.common.CommonDialog
@@ -17,13 +15,12 @@
import com.xw.common.base.ImageSelectAdapter
import com.xw.common.base.ShowImgListDialog
import com.xw.common.utils.BindUtils.getUrls
import com.xw.common.utils.GlideEngine
import com.xw.common.utils.PictureCompressEngine
import com.xw.common.utils.ToastUtilCommon
import com.xw.yunwei.BR
import com.xw.yunwei.BaseBusinessActivity
import com.xw.yunwei.databinding.ActivityCarRepairBinding
import com.xw.yunwei.model.CarModel
import com.xw.yunwei.utils.PictureSelectorFactory
/**
 * 车辆维修
@@ -160,23 +157,16 @@
    // 进入图库
    @SuppressLint("SourceLockedOrientationActivity")
    private fun enterGallery() {
        PictureSelector.create(this)
            .openGallery(SelectMimeType.ofImage())
            .setImageEngine(GlideEngine.createGlideEngine())
            .setMaxSelectNum(viewModel.maxSizes[viewModel.operateIndex] - viewModel.adapters[viewModel.operateIndex].data.size)
            .setImageSpanCount(4)
            .isPreviewImage(true)
            .isDisplayCamera(false)
            .setCompressEngine(PictureCompressEngine())
            .forResult(resultCallbackListener)
        PictureSelectorFactory.enterGallery(
            this,
            viewModel.maxSizes[viewModel.operateIndex] - viewModel.adapters[viewModel.operateIndex].data.size,
            resultCallbackListener
        )
    }
    // 拍照
    private fun takeAPhotograph() {
        PictureSelector.create(this)
            .openCamera(SelectMimeType.ofImage())
            .setCompressEngine(PictureCompressEngine())
            .forResultActivity(resultCallbackListener)
        PictureSelectorFactory.takeAPhotograph(this,resultCallbackListener)
    }
    private var resultCallbackListener = object : OnResultCallbackListener<LocalMedia> {
app/src/main/java/com/xw/yunwei/ui/work/checkInMission/viewmodel/CruiseCheckInOperationViewModel.kt
@@ -8,16 +8,12 @@
import androidx.lifecycle.MutableLiveData
import com.amap.location.support.util.TextUtils
import com.blankj.utilcode.util.UriUtils
import com.luck.picture.lib.basic.PictureSelector
import com.luck.picture.lib.config.PictureMimeType
import com.luck.picture.lib.config.SelectMimeType
import com.luck.picture.lib.entity.LocalMedia
import com.luck.picture.lib.interfaces.OnResultCallbackListener
import com.xw.common.CommonDialog
import com.xw.common.base.BaseViewModel
import com.xw.common.base.ShowImgListDialog
import com.xw.common.utils.GlideEngine
import com.xw.common.utils.PictureCompressEngine
import com.xw.common.utils.ToastUtilCommon
import com.xw.yunwei.model.CheckInMissionPointInfo
import com.xw.yunwei.model.UploadModel
@@ -25,6 +21,7 @@
import com.xw.yunwei.net.WorkRepository
import com.xw.yunwei.ui.dialog.CruiseCheckInSuccessDialog
import com.xw.yunwei.ui.work.checkInMission.CruiseCheckInMissionCompleteActivity
import com.xw.yunwei.utils.PictureSelectorFactory
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import okhttp3.MediaType.Companion.toMediaType
@@ -110,24 +107,15 @@
    // 进入图库
    @SuppressLint("SourceLockedOrientationActivity")
    private fun enterGallery(context: Context) {
        PictureSelector.create(context)
            .openGallery(SelectMimeType.ofImage())
            .setImageEngine(GlideEngine.createGlideEngine())
            .setMaxSelectNum(
                (pictureMax.value ?: 1) - (operationPictures.value?.count { it.isNotEmpty() } ?: 0))
            .setImageSpanCount(4)
            .isPreviewImage(true)
            .isDisplayCamera(false)
            .setCompressEngine(PictureCompressEngine())
            .forResult(this)
        PictureSelectorFactory.enterGallery(
            context,
            (pictureMax.value ?: 1) - (operationPictures.value?.count { it.isNotEmpty() } ?: 0),
            this)
    }
    // 拍照
    private fun takeAPhotograph(context: Context) {
        PictureSelector.create(context)
            .openCamera(SelectMimeType.ofImage())
            .setCompressEngine(PictureCompressEngine())
            .forResultActivity(this)
        PictureSelectorFactory.takeAPhotograph(context,this)
    }
    override fun onResult(result: ArrayList<LocalMedia>?) {
app/src/main/java/com/xw/yunwei/ui/work/site/viewmodel/SiteErrorUploadVM.kt
@@ -8,22 +8,19 @@
import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.MutableLiveData
import com.blankj.utilcode.util.UriUtils
import com.luck.picture.lib.basic.PictureSelector
import com.luck.picture.lib.config.PictureMimeType
import com.luck.picture.lib.config.SelectMimeType
import com.luck.picture.lib.entity.LocalMedia
import com.luck.picture.lib.interfaces.OnResultCallbackListener
import com.xw.common.CommonDialog
import com.xw.common.base.BaseViewModel
import com.xw.common.base.ShowImgListDialog
import com.xw.common.utils.GlideEngine
import com.xw.common.utils.PictureCompressEngine
import com.xw.common.utils.ToastUtilCommon
import com.xw.yunwei.R
import com.xw.yunwei.model.SiteModel
import com.xw.yunwei.model.UploadModel
import com.xw.yunwei.net.CommonRepository
import com.xw.yunwei.net.WorkRepository
import com.xw.yunwei.utils.PictureSelectorFactory
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.MultipartBody
import okhttp3.RequestBody.Companion.asRequestBody
@@ -107,25 +104,15 @@
    // 进入图库
    @SuppressLint("SourceLockedOrientationActivity")
    private fun enterGallery(context: Context) {
        PictureSelector.create(context)
            .openGallery(SelectMimeType.ofImage())
            .setImageEngine(GlideEngine.createGlideEngine())
            .setMaxSelectNum(
                (pictureMax.value ?: 1) - (operationPictures.value?.count { it.isNotEmpty() } ?: 0)
            )
            .setImageSpanCount(4)
            .isPreviewImage(true)
            .isDisplayCamera(false)
            .setCompressEngine(PictureCompressEngine())
            .forResult(this)
        PictureSelectorFactory.enterGallery(
            context,
            (pictureMax.value ?: 1) - (operationPictures.value?.count { it.isNotEmpty() } ?: 0),
            this)
    }
    // 拍照
    private fun takeAPhotograph(context: Context) {
        PictureSelector.create(context)
            .openCamera(SelectMimeType.ofImage())
            .setCompressEngine(PictureCompressEngine())
            .forResultActivity(this)
        PictureSelectorFactory.takeAPhotograph(context,this)
    }
    override fun onResult(result: ArrayList<LocalMedia>?) {
app/src/main/java/com/xw/yunwei/utils/PictureSelectorFactory.kt
New file
@@ -0,0 +1,47 @@
package com.xw.yunwei.utils
import android.content.Context
import com.luck.picture.lib.basic.PictureSelector
import com.luck.picture.lib.config.SelectMimeType
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.xw.common.utils.GlideEngine
import com.xw.common.utils.PictureCompressEngine
import com.xw.yunwei.R
//图片选择器工厂
object PictureSelectorFactory {
    //获取选择器
    fun enterGallery(
        context: Context,
        max: Int,
        call: OnResultCallbackListener<LocalMedia>,
    ) {
        PictureSelector.create(context)
            .openGallery(SelectMimeType.ofImage())
            .setSelectorUIStyle(PictureSelectorStyle().apply {
                selectMainStyle = SelectMainStyle().apply {
                    isPreviewSelectNumberStyle = true
                    isSelectNumberStyle = true
                    selectBackground = R.drawable.ps_demo_blue_num_selector
                }
            })
            .setImageEngine(GlideEngine.createGlideEngine())
            .setMaxSelectNum(max)
            .setImageSpanCount(4)
            .isPreviewImage(true)
            .isDisplayCamera(false)
            .setCompressEngine(PictureCompressEngine())
            .forResult(call)
    }
    //拍摄照片
    fun takeAPhotograph(context: Context, call: OnResultCallbackListener<LocalMedia>) {
        PictureSelector.create(context)
            .openCamera(SelectMimeType.ofImage())
            .setCompressEngine(PictureCompressEngine())
            .forResultActivity(call)
    }
}
app/src/main/res/drawable/ps_demo_blue_num_normal.xml
New file
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval"
    android:useLevel="false">
    <solid android:color="@color/ps_color_transparent" />
    <stroke
        android:width="1dp"
        android:color="@color/ps_color_white" />
    <size
        android:width="18dp"
        android:height="18dp" />
</shape>
app/src/main/res/drawable/ps_demo_blue_num_selected.xml
New file
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval"
    android:useLevel="false">
    <solid android:color="@color/color_00c25c" />
    <size
        android:width="18dp"
        android:height="18dp" />
</shape>
app/src/main/res/drawable/ps_demo_blue_num_selector.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/ps_demo_blue_num_normal" android:state_selected="false" />
    <item android:drawable="@drawable/ps_demo_blue_num_selected" android:state_selected="true" />
</selector>
app/src/main/res/values/colors.xml
@@ -15,4 +15,5 @@
    <color name="color_d9d9d9">#d9d9d9</color>
    <color name="color_0f31456a">#0f31456A</color>
    <color name="color_1a026ee4">#1a026EE4</color>
    <color name="color_00c25c">#00c25c</color>
</resources>