# ImagePicker
###Android自定义相册,完全仿微信UI,实现了拍照、图片选择(单选/多选)、 裁剪 、旋转、等功能。
该项目参考了:
* [https://github.com/pengjianbo/GalleryFinal](https://github.com/pengjianbo/GalleryFinal)
* [https://github.com/easonline/AndroidImagePicker](https://github.com/easonline/AndroidImagePicker)
喜欢原作的可以去使用。同时欢迎大家下载体验本项目,如果使用过程中遇到什么问题,欢迎反馈。
### 联系方式
* 邮箱地址: liaojeason@126.com
* QQ群: 489873144 (建议使用QQ群,邮箱使用较少,可能看的不及时)
* 本群旨在为使用我的github项目的人提供方便,如果遇到问题欢迎在群里提问。个人能力也有限,希望一起学习一起进步。
## 演示
![image](https://github.com/jeasonlzy/Screenshots/blob/master/ImagePicker/demo1.png)![image](https://github.com/jeasonlzy/Screenshots/blob/master/ImagePicker/demo2.gif)
![image](https://github.com/jeasonlzy/Screenshots/blob/master/ImagePicker/demo3.gif)![image](https://github.com/jeasonlzy/Screenshots/blob/master/ImagePicker/demo5.gif)
## 1.用法
使用前,对于Android Studio的用户,可以选择添加:
```java
compile 'com.lzy.widget:imagepicker:0.3.2' //指定版本
compile 'com.lzy.widget:imagepicker:+' //最新版本
```
## 2.功能和参数含义
###温馨提示:目前库中的预览界面有个原图的复选框,暂时只做了UI,还没有做压缩的逻辑
<table>
<tdead>
<tr>
<th align="center">配置参数</th>
<th align="center">参数含义</th>
</tr>
</tdead>
<tbody>
<tr>
<td align="center">multiMode</td>
<td align="center">图片选着模式,单选/多选</td>
</tr>
<tr>
<td align="center">selectLimit</td>
<td align="center">多选限制数量,默认为9</td>
</tr>
<tr>
<td align="center">showCamera</td>
<td align="center">选择照片时是否显示拍照按钮</td>
</tr>
<tr>
<td align="center">crop</td>
<td align="center">是否允许裁剪(单选有效)</td>
</tr>
<tr>
<td align="center">style</td>
<td align="center">有裁剪时,裁剪框是矩形还是圆形</td>
</tr>
<tr>
<td align="center">focusWidth</td>
<td align="center">矩形裁剪框宽度(圆形自动取宽高最小值)</td>
</tr>
<tr>
<td align="center">focusHeight</td>
<td align="center">矩形裁剪框高度(圆形自动取宽高最小值)</td>
</tr>
<tr>
<td align="center">outPutX</td>
<td align="center">裁剪后需要保存的图片宽度</td>
</tr>
<tr>
<td align="center">outPutY</td>
<td align="center">裁剪后需要保存的图片高度</td>
</tr>
<tr>
<td align="center">isSaveRectangle</td>
<td align="center">裁剪后的图片是按矩形区域保存还是裁剪框的形状,例如圆形裁剪的时候,该参数给true,那么保存的图片是矩形区域,如果该参数给fale,保存的图片是圆形区域</td>
</tr>
<tr>
<td align="center">imageLoader</td>
<td align="center">需要使用的图片加载器,自需要实现ImageLoader接口即可</td>
</tr>
</tbody>
</table>
## 3.代码参考
### 0.首先你需要继承 `com.lzy.imagepicker.loader.ImageLoader` 这个接口,实现其中的方法,比如以下代码是使用 `Picasso` 三方加载库实现的
```java
public class PicassoImageLoader implements ImageLoader {
@Override
public void displayImage(Activity activity, String path, ImageView imageView, int width, int height) {
Picasso.with(activity)//
.load(new File(path))//
.placeholder(R.mipmap.default_image)//
.error(R.mipmap.default_image)//
.resize(width, height)//
.centerInside()//
.memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE)//
.into(imageView);
}
@Override
public void clearMemoryCache() {
//这里是清除缓存的方法,根据需要自己实现
}
}
```
### 1.然后配置图片选择器,一般在Application初始化配置一次就可以,这里就需要将上面的图片加载器设置进来,其余的配置根据需要设置
```java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image_picker);
ImagePicker imagePicker = ImagePicker.getInstance();
imagePicker.setImageLoader(new PicassoImageLoader()); //设置图片加载器
imagePicker.setShowCamera(true); //显示拍照按钮
imagePicker.setCrop(true); //允许裁剪(单选才有效)
imagePicker.setSaveRectangle(true); //是否按矩形区域保存
imagePicker.setSelectLimit(9); //选中数量限制
imagePicker.setStyle(CropImageView.Style.RECTANGLE); //裁剪框的形状
imagePicker.setFocusWidth(800); //裁剪框的宽度。单位像素(圆形自动取宽高最小值)
imagePicker.setFocusHeight(800); //裁剪框的高度。单位像素(圆形自动取宽高最小值)
imagePicker.setOutPutX(1000);//保存文件的宽度。单位像素
imagePicker.setOutPutY(1000);//保存文件的高度。单位像素
}
```
### 2.以上配置完成后,在适当的方法中开启相册,例如点击按钮时
```java
public void onClick(View v) {
Intent intent = new Intent(this, ImageGridActivity.class);
startActivityForResult(intent, IMAGE_PICKER);
}
}
```
### 3.重写`onActivityResult`方法,回调结果
```java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == ImagePicker.RESULT_CODE_ITEMS) {
if (data != null && requestCode == IMAGE_PICKER) {
ArrayList<ImageItem> images = (ArrayList<ImageItem>) data.getSerializableExtra(ImagePicker.EXTRA_RESULT_ITEMS);
MyAdapter adapter = new MyAdapter(images);
gridView.setAdapter(adapter);
} else {
Toast.makeText(this, "没有数据", Toast.LENGTH_SHORT).show();
}
}
}
```
没有合适的资源?快使用搜索试试~ 我知道了~
Android 简单易配置的 ImagePicker(仿微信)单选 or 多选
共98个文件
xml:40个
java:28个
png:14个
需积分: 9 7 下载量 156 浏览量
2017-01-16
15:43:21
上传
评论
收藏 156KB ZIP 举报
温馨提示
超级高仿微信的图片选择器,简单易配置,喜欢的朋友可以下载下来试试
资源推荐
资源详情
资源评论
收起资源包目录
ImagePicker-master.zip (98个子文件)
ImagePicker-master
gradlew.bat 2KB
gradlew 5KB
gradle.properties 855B
imagepicker
proguard-rules.pro 645B
src
main
res
drawable
selector_grid_camera_bg.xml 242B
selector_top_ok.xml 420B
selector_back_press.xml 417B
selector_item_checked.xml 346B
drawable-xxhdpi
bg_btn_dis.9.png 289B
bg_btn_pre.9.png 270B
bg_btn_nor.9.png 286B
values
colors.xml 287B
strings.xml 568B
attrs.xml 565B
styles.xml 874B
mipmap-xxhdpi
checkbox_checked.png 1KB
ic_back.png 910B
grid_camera.png 799B
list_selected.png 16KB
default_image.png 1KB
ic_del.png 843B
checkbox_normal.png 171B
text_indicator.png 191B
anim
top_in.xml 199B
fade_in.xml 840B
scale_out.xml 898B
bottom_in.xml 845B
left_out.xml 845B
fade_out.xml 840B
right_out.xml 844B
bottom_out.xml 845B
right_in.xml 846B
scale_in.xml 898B
left_in.xml 847B
hide_to_bottom.xml 330B
top_out.xml 846B
show_from_bottom.xml 330B
layout
activity_image_crop.xml 1KB
activity_image_preview.xml 2KB
activity_image_grid.xml 3KB
adapter_folder_list_item.xml 2KB
include_top_bar.xml 2KB
pop_folder.xml 1KB
adapter_image_list_item.xml 1KB
adapter_camera_item.xml 722B
java
com
lzy
imagepicker
ImageDataSource.java 7KB
bean
ImageItem.java 1KB
ImageFolder.java 1KB
view
FolderPopUpWindow.java 5KB
SystemBarTintManager.java 19KB
CropImageView.java 28KB
SuperCheckBox.java 1KB
ViewPagerFixed.java 1KB
loader
ImageLoader.java 722B
ui
ImagePreviewActivity.java 8KB
ImagePreviewBaseActivity.java 3KB
ImageCropActivity.java 5KB
ImageBaseActivity.java 2KB
ImagePreviewDelActivity.java 4KB
ImageGridActivity.java 12KB
adapter
ImagePageAdapter.java 3KB
ImageGridAdapter.java 7KB
ImageFolderAdapter.java 4KB
ImagePicker.java 10KB
Utils.java 2KB
AndroidManifest.xml 1KB
.gitignore 7B
build.gradle 631B
app
proguard-rules.pro 645B
src
main
res
drawable
selector_image_add.xml 422B
mipmap-hdpi
ic_launcher.png 3KB
image_add_nor.png 224B
image_add_sel.png 223B
values
colors.xml 208B
strings.xml 74B
styles.xml 383B
dimens.xml 211B
layout
activity_image_picker.xml 10KB
list_item_image.xml 487B
activity_wxdemo.xml 888B
java
com
lzy
imagepickerdemo
GApp.java 2KB
ImagePickerActivity.java 10KB
wxdemo
ImagePickerAdapter.java 4KB
WxDemoActivity.java 5KB
imageloader
PicassoImageLoader.java 1KB
XUtils3ImageLoader.java 1KB
UILImageLoader.java 998B
GlideImageLoader.java 1KB
AndroidManifest.xml 919B
.gitignore 7B
build.gradle 995B
gradle
wrapper
gradle-wrapper.jar 52KB
gradle-wrapper.properties 233B
.gitignore 78B
README.md 6KB
bintray.gradle 2KB
settings.gradle 31B
build.gradle 642B
共 98 条
- 1
资源评论
zMadmad
- 粉丝: 2
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Springboot集成Netflix-ribbon、Enreka实现负载均衡-源码
- 互联网产品项目管理流程-PPT.ppt
- 互联网大数据分析之《用户画像分析》ppt.ppt
- 毕业设计-基于PyQt5、CV、numpy实现的暗通道先验的方法进行图像去雾python源码+文档说明
- 基于暗通道先验的图像去雾算法,可以通过ESP32-CAM进行图像采集python源码+视频(课程设计)
- 基于Pyortch+python+三种卷积神经实现的深度神经网络的交通标志识别算法python源码+文档说明+数据集
- 深度学习课程设计-基于虚拟仿真环境下的自动驾驶交通标志识别python源码+文档说明+数据+模型权重
- 互联网金融第二章——互联网金融支付-PPT.ppt
- 基于OpenCV实现的交通标志识别C++源码+文档说明+测试图片(课程设计)
- 基于虚拟仿真环境下的自动驾驶交通标志识别python源码+文档说明+截图演示+数据集+使用教学(98分高分毕业设计)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功