不知道为什么README文档在github上排版格式全乱了,所以写个博客当文档看吧

ImagePicker

这是一个Android使用的自定义图片选择器,众所周知,Android碎片化问题严重,其中就包括图片选择的问题,调用系统相册选择图片或裁剪图片时反应慢,用户体验有种割裂感,所以自定义一个通用的图片选择器还是有点小必要的,最近也闲着没事做就撸了一个,效果还行,喜欢的可以star或fork,发现问题的也请麻烦提交issue。

Github地址:https://github.com/Vanish136/ImagePicker

码云地址:http://git.oschina.net/vanish136/ImagePicker

效果图:









使用方法:

1.添加Gradle依赖:

dependencies{         compile 'com.lwkandroid:ImagePicker:1.3.0'    }

注:该博客不再更新,想了解最新版请查看github或码云


2.代码中使用:

    //发起图片选择    new ImagePicker.()                   .pickType(ImagePickType.MUTIL) //设置选取类型(拍照ONLY_CAMERA、单选SINGLE、多选MUTIL)                   .maxNum(9) //设置最大选择数量(此选项只对多选生效,拍照和单选都是1,修改后也无效)                   .needCamera(true) //是否需要在界面中显示相机入口(类似微信那样)                   .cachePath(cachePath) //自定义缓存路径(拍照和裁剪都需要用到缓存)                   .doCrop(1,1,300,300) //裁剪功能需要调用这个方法,多选模式下无效,参数:aspectX,aspectY,outputX,outputY                   .displayer(new GlideImagePickerDisplayer()) //自定义图片加载器,默认是Glide实现的,可自定义图片加载器                   .start(this, REQUEST_CODE); //自定义RequestCode    //重写Activity或Fragment中OnActivityResult()    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data)    {        super.onActivityResult(requestCode, resultCode, data);        if (requestCode == REQUEST_CODE && resultCode == RESULT_OK && data != null)        {            //获取选择的图片数据            List resultList = data.getParcelableArrayListExtra(ImagePicker.INTENT_RESULT_DATA);        }    }

更详细的使用样式请参考github上的demo

注意事项

V1.0.1版本采用了自定义FileProvider的策略,所以无需修改清单文件了,下面的内容可以无视了。

以下是V1.0.0版本适配Android7.0的策略(推荐直接使用V1.0.1):

由于Android7.0以上StrictMode策略的存在,本库中拍照使用了FileProvider,如果引用该库的工程中也使用到了FileProvider,为了避免清单文件合并出错,需要做出以下调整:

1.在主module的strings.xml中定义FileProvider的authorities,代码如下:

//ImagePicker中使用的名字就是app_fileprovider_authorities,这样就可以覆盖掉库中的authorities<string name="app_fileprovider_authorities">com.sample.fileproviderstring>

2.在主module中定义临时授权目录的xml文件中添加该库的授权目录,代码如下:

<paths>    <external-path        name="imagepicker"        path=""/>paths>

3.修改主module的AndroidManiFest文件中FileProvider模块,代码如下:

"android.support.v4.content.FileProvider"      android:authorities="@string/app_fileprovider_authorities"      android:exported="false"      android:grantUriPermissions="true"      tools:replace="android:authorities"> //避免冲突      "android.support.FILE_PROVIDER_PATHS"          android:resource="@xml/fileprovider_path"          tools:replace="android:resource"/> //避免冲突




感谢

项目中裁剪模块修改自开源项目:https://github.com/oginotihiro/cropview

感谢所有为开源做出贡献的人!

更多相关文章

  1. android 视频和图片切换并进行自动轮播
  2. Android之ListView原理学习与优化总结
  3. android游戏开发适应多屏幕的问题 .
  4. [置顶] android人脸识别——HowOld测测你的年龄和性别
  5. android 图片压缩,bitmap压缩总结
  6. Android面试题目之常见的选择题
  7. Android(安卓)UI设计小知识——Nine-Patch图片
  8. Android学习笔记:获取相册和摄像机图片在APP显示Demo
  9. 转:Android中自定义SeekBar的背景颜色,进度条颜色,以及滑块的图片

随机推荐

  1. APK反破解之三:NDK编译.so动态库
  2. Android 获取手机的厂商信息
  3. Android -------- 从一个Fragment跳转到
  4. Android属性动画优化
  5. ffmpeg3.3 编译 android 系统版本 32位
  6. mmap那些事之android property实现之二
  7. Android高级工程师必备知识点--更新中
  8. android定时器实现
  9. Android对象序列化存储
  10. Android 适配 全面屏/刘海屏