riku
2021-02-25 e102578ebfc95c27aeb13dce13fb82af53a2bead
app/src/main/java/cn/flightfeather/thirdapp/module/base/BaseTakePicActivity.kt
@@ -12,6 +12,7 @@
import cn.flightfeather.thirdapp.util.UUIDGenerator
import cn.flightfeather.thirdapp.util.file.FileUtil
import cn.flightfeather.thirdapp.util.photo.PhotoUtil
import com.bumptech.glide.Glide
import com.lcw.library.imagepicker.ImagePicker
import org.jetbrains.anko.toast
import java.io.File
@@ -31,8 +32,8 @@
        const val EXTRA_SELECT_IMAGES = ImagePicker.EXTRA_SELECT_IMAGES
    }
    //拍摄的待上传的图片文件列表
    val pathTempList = mutableListOf<File>()
    //拍摄的待上传的图片文件列表, true: 代表需要上传;false: 代表不需要上传
    val pathTempList = mutableListOf<Pair<File, Boolean>>()
    // fixme: 2019/8/2  由于原代码中大部分图片拍摄固定死了最多3张,所以没有使用列表结构,而是手动设置了3个ImageView,此处暂时延用,不做修改
    var imageViewList = mutableListOf<ImageView>()
@@ -56,8 +57,8 @@
                //查看临时拍摄图片可以删除
                data?.getIntExtra("position", -1)?.let {
                    if (it > -1) {
                        if (pathTempList[it].exists()) {
                            pathTempList[it].delete()
                        if (pathTempList[it].first.exists()) {
                            pathTempList[it].first.delete()
                        }
                        pathTempList.removeAt(it)
                        refreshImageView()
@@ -74,7 +75,7 @@
                    }
                    try {
                        FileUtil.copyFile(oldFile, newFile)
                        pathTempList.add(newFile)
                        pathTempList.add(Pair(newFile, true))
                    } catch (e: IOException) {
                        e.printStackTrace()
                        application.toast("复制文件失败")
@@ -91,15 +92,20 @@
            when {
                i < picSize -> {
                    imageViewList[i].setOnClickListener(viewPhotoClickListener(i))
                    // fixme: 2019/8/2 此处给imageVIew设置图片在原代码中是自定义了一个AsyncTask,之后可以用Glide等第三方框架替代
                    SetImageTask(pathTempList[i], imageViewList[i]).execute()
                    imageViewList[i].scaleType = ImageView.ScaleType.CENTER_CROP
                    Glide.with(this)
                            .load(pathTempList[i].first)
                            .placeholder(R.drawable.icon_add_photo_waite)
                            .into(imageViewList[i])
                }
                i == picSize -> imageViewList[i].run {
                    setOnClickListener(takePhotoClickListener(i))
                    scaleType = ImageView.ScaleType.FIT_CENTER
                    setImageResource(R.drawable.icon_add_photo)
                }
                else -> imageViewList[i].run {
                    setOnClickListener(null)
                    scaleType = ImageView.ScaleType.FIT_CENTER
                    setImageResource(R.drawable.icon_add_photo_blank)
                }
            }
@@ -109,11 +115,15 @@
    //有图片时,查看图片的点击事件(temp)
    fun viewPhotoClickListener(position: Int): View.OnClickListener {
        return View.OnClickListener {
            val fileList = mutableListOf<File>()
            pathTempList.forEach {
                fileList.add(it.first)
            }
            val intent = Intent(this, PhotoViewerActivity::class.java)
            intent.putExtra("position", position)
            intent.putExtra("type", PhotoViewerActivity.EVIDENCE_PHOTO_TEMP)
            intent.putExtra("deletable", picDeletable)
            intent.putExtra(PhotoViewerActivity.PARA_FILES, pathTempList as Serializable)
            intent.putExtra(PhotoViewerActivity.PARA_FILES, fileList as Serializable)
            startActivityForResult(intent, VIEW_PHOTO)
        }
    }