1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
package cn.flightfeather.thirdappmodule.util.photo
 
import android.app.Activity
import android.content.Intent
import android.support.v4.app.Fragment
import com.lcw.library.imagepicker.ImagePicker
import com.lcw.library.imagepicker.activity.ImagePickerActivity
import com.lcw.library.imagepicker.manager.ConfigManager
import com.lcw.library.imagepicker.utils.ImageLoader
import java.util.*
 
 
/**
 * 由于 [ImagePicker] 构造方法为私有,无法继承重写。
 * 因此复制 [ImagePicker],添加从fragment 启动 startActivityResult 的方法
 * @author riku
 * Date: 2019/11/27
 */
class ImagePicker2 {
 
    val EXTRA_SELECT_IMAGES = "selectItems"
 
    companion object {
        @Volatile
        private var mImagePicker: ImagePicker2? = null
 
        @JvmStatic
        val instance: ImagePicker2
            get() {
                if (mImagePicker == null) {
                    synchronized(ImagePicker2::class.java) {
                        if (mImagePicker == null) {
                            mImagePicker =
                                ImagePicker2()
                        }
                    }
                }
                return mImagePicker!!
            }
    }
 
 
 
    /**
     * 设置标题
     *
     * @param title
     * @return
     */
    fun setTitle(title: String): ImagePicker2 {
        ConfigManager.getInstance().title = title
        return instance
    }
 
    /**
     * 是否支持相机
     *
     * @param showCamera
     * @return
     */
    fun showCamera(showCamera: Boolean): ImagePicker2 {
        ConfigManager.getInstance().isShowCamera = showCamera
        return instance
    }
 
    /**
     * 是否展示图片
     *
     * @param showImage
     * @return
     */
    fun showImage(showImage: Boolean): ImagePicker2 {
        ConfigManager.getInstance().isShowImage = showImage
        return instance
    }
 
    /**
     * 是否展示视频
     *
     * @param showVideo
     * @return
     */
    fun showVideo(showVideo: Boolean): ImagePicker2 {
        ConfigManager.getInstance().isShowVideo = showVideo
        return instance
    }
 
 
    /**
     * 图片最大选择数
     *
     * @param maxCount
     * @return
     */
    fun setMaxCount(maxCount: Int): ImagePicker2 {
        ConfigManager.getInstance().maxCount = maxCount
        return instance
    }
 
    /**
     * 设置单类型选择(只能选图片或者视频)
     *
     * @param isSingleType
     * @return
     */
    fun setSingleType(isSingleType: Boolean): ImagePicker2 {
        ConfigManager.getInstance().isSingleType = isSingleType
        return instance
    }
 
 
    /**
     * 设置图片加载器
     *
     * @param imageLoader
     * @return
     */
    fun setImageLoader(imageLoader: ImageLoader): ImagePicker2 {
        ConfigManager.getInstance().imageLoader = imageLoader
        return instance
    }
 
    /**
     * 设置图片选择历史记录
     *
     * @param imagePaths
     * @return
     */
    fun setImagePaths(imagePaths: ArrayList<String>): ImagePicker2 {
        ConfigManager.getInstance().imagePaths = imagePaths
        return instance
    }
 
    /**
     * 启动
     *
     * @param activity
     */
    fun start(activity: Activity?, requestCode: Int) {
        val intent = Intent(activity, ImagePickerActivity::class.java)
        activity?.startActivityForResult(intent, requestCode)
    }
 
    fun start(fragment: Fragment?, requestCode: Int) {
        val intent = Intent(fragment?.activity, ImagePickerActivity::class.java)
        fragment?.startActivityForResult(intent, requestCode)
    }
}