1
1
# 高仿微信图片选择器
2
2
3
- #### 注意开发细节,尽可能的做到加载速度最快,目前支持图片单选, 多选,多文件夹切换,自定义图片加载器等功能。
3
+ #### 注意开发细节,尽可能的做到加载速度最快,目前支持图片,视频单选, 多选,多文件夹切换,大图预览 ,自定义图片加载器等功能。
4
4
5
5
#### 效果图:
6
6
![ ] ( https://github.com/Lichenwei-Dev/ImagePicker/blob/master/screenshot/Screenshot1.png )
7
7
![ ] ( https://github.com/Lichenwei-Dev/ImagePicker/blob/master/screenshot/Screenshot2.png )
8
8
![ ] ( https://github.com/Lichenwei-Dev/ImagePicker/blob/master/screenshot/Screenshot3.png )
9
9
![ ] ( https://github.com/Lichenwei-Dev/ImagePicker/blob/master/screenshot/Screenshot4.png )
10
10
11
-
11
+ 相比1.0.+版本,2.0版本进行了代码的大块重构,注重模块间的代码解耦,简化了配置,将兼容Android7.0所需要的FileProvider下沉到库中完成,不再需要开发者配置,并对GIF图,视频,大图预览等功能有了支持。
12
12
13
13
### 使用方式:
14
- 1、在项目下的build.gradle文件中引入(注意gradle的版本):
14
+
15
+ 1、如何 在项目中引入该图片加载库:
15
16
```
16
17
//gradle版本在3.0以下引入此行
17
- compile 'com.lcw.library:imagepicker:1.1.4 '
18
+ compile 'com.lcw.library:imagepicker:2.0.0 '
18
19
19
20
//gradle版本在3.0以上引入此行
20
- implementation 'com.lcw.library:imagepicker:1.1.4 '
21
+ implementation 'com.lcw.library:imagepicker:2.0.0 '
21
22
```
22
23
23
- 2、然后需要在AndroidManifest .xml里声明组件:
24
+ 2、需要在AndroidManifest .xml里声明组件:
24
25
```
25
26
<application>
26
27
....
27
- <!--图片选择器的主Activity -->
28
+ <!--图片列表Activity -->
28
29
<activity
29
30
android:name="com.lcw.library.imagepicker.activity.ImagePickerActivity"
30
31
android:screenOrientation="portrait" />
31
- <!--图片大图预览 -->
32
+ <!--大图预览Activity -->
32
33
<activity
33
34
android:name="com.lcw.library.imagepicker.activity.ImagePreActivity"
34
35
android:screenOrientation="portrait" />
@@ -37,18 +38,20 @@ implementation 'com.lcw.library:imagepicker:1.1.4'
37
38
38
39
```
39
40
40
-
41
- 3、调用方式非常简单,只需要简单一行代码:
41
+ 3、一行代码调用:
42
42
```
43
- ImagePicker.getInstance()
43
+ ImagePicker.getInstance()
44
44
.setTitle("标题")//设置标题
45
45
.showCamera(true)//设置是否显示拍照按钮
46
+ .showImage(true)//设置是否展示图片
47
+ .showVideo(true)//设置是否展示视频
46
48
.setMaxCount(9)//设置最大选择图片数目(默认为1,单选)
49
+ .setImagePaths(mImageList)//保存上一次选择图片的状态,如果不需要可以忽略
47
50
.setImageLoader(new GlideLoader())//设置自定义图片加载器
48
- .start(mContext , REQUEST_SELECT_IMAGES_CODE);//REQEST_SELECT_IMAGES_CODE为Intent调用的requestCode
51
+ .start(MainActivity.this , REQUEST_SELECT_IMAGES_CODE);//REQEST_SELECT_IMAGES_CODE为Intent调用的requestCode
49
52
```
50
53
51
- 4、获取选择图片返回的数据 :
54
+ 4、如何获取选中的图片集合 :
52
55
```
53
56
@Override
54
57
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
@@ -58,74 +61,22 @@ implementation 'com.lcw.library:imagepicker:1.1.4'
58
61
}
59
62
```
60
63
61
- 5、关于自定义图片加载器,不具体指定图片加载框架, 让开发者更加灵活的定制,只需要去实现ImageLoader接口即可:
64
+ 5、如何自定义图片加载器( 让开发者更加灵活的定制,只需要去实现ImageLoader接口即可) :
62
65
```
63
66
public class GlideLoader implements ImageLoader {
64
-
65
- @Override
66
- public void loadImage(ImageView imageView, String imagePah) {
67
- //小图加载,这里以Glide图片加载框架为例
68
- RequestOptions options = new RequestOptions()
69
- .centerCrop()
70
- .placeholder(R.mipmap.icon_image_default)
71
- .error(R.mipmap.icon_image_error);
72
- Glide.with(imageView.getContext()).load(imagePah).apply(options).into(imageView);
73
- }
74
-
67
+ //to do something 可以参考Demo用法
75
68
}
76
69
```
77
70
78
- 6、关于权限,6.0以后危险权限需要动态申请,不了解的同学可以看下我之前写过的一篇文章[ 《适配Android6.0动态权限管理》] ( https://www.jianshu.com/p/a37f4827079a ) ,由于国内各大厂商的ROM存在差异化,需要经常处理一些兼容上的问题,也有比较成熟的开源库 ,为了简洁,本Library就不提供此功能,请开发者自行处理,所需权限:
71
+ 6、关于权限,6.0以后危险权限需要动态申请,不了解的同学可以看下我之前写过的一篇文章[ 《适配Android6.0动态权限管理》] ( https://www.jianshu.com/p/a37f4827079a ) ,由于国内各大厂商的ROM存在差异化,需要经常处理一些兼容上的问题,也有比较成熟的开源库支持 ,为了简洁,本Library就不提供此功能,请开发者自行处理,所需权限:
79
72
```
80
73
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
81
74
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
82
75
<uses-permission android:name="android.permission.CAMERA" />
83
76
```
84
77
85
- 7、最后需要注意的是在Android7.0后私有目录被限制访问,这里做了兼容处理,在开启拍照按钮的时候需要注意:
86
-
87
- (1)首先需要在AndroidManifest.xml里声明组件:
88
- ```
89
- <application>
90
- ....
91
- <!-- Android 7.0 文件共享配置 -->
92
- <provider
93
- android:name="android.support.v4.content.FileProvider"
94
- android:authorities="com.lcw.library.imagepicker.provider"
95
- android:exported="false"
96
- android:grantUriPermissions="true">
97
- <meta-data
98
- android:name="android.support.FILE_PROVIDER_PATHS"
99
- android:resource="@xml/image_picker" />
100
- </provider>
101
- ....
102
- </application>
103
- ```
104
- (2)然后在res文件夹下建立一个xml文件夹,放置xml文件(image_picker.xml)即可,xml内容如下:
105
- ```
106
- <?xml version="1.0" encoding="utf-8"?>
107
- <paths>
108
- <external-path
109
- name="imagePicker"
110
- path="" />
111
- </paths>
112
- ```
113
-
114
- 8、其他:
115
- 根据业务的需求,有时候我们在选择一部分图片后,再次跳转图片选择器的时候,想要去保存已经勾选的图片状态,这边也提供了对应的方法,只需要把onActivityResult返回的图片路径List集合,重新设置进来即可,代码如下:
116
- ```
117
- ImagePicker.getInstance()
118
- .setTitle("标题")
119
- .showCamera(true)
120
- .setMaxCount(9)
121
- .setImagePaths(mImagePaths)//设置list
122
- .setImageLoader(new GlideLoader())
123
- .start(MainActivity.this, REQUEST_SELECT_IMAGES_CODE);
124
- ```
125
-
126
-
127
78
128
- 版本会持续迭代,未完待续 。。。(欢迎Star,欢迎Fork)
79
+ 版本会持续迭代,欢迎大家给建议 。。。(欢迎Star,欢迎Fork)
129
80
130
81
131
82
0 commit comments