Android自定义图片选取器,类似微信样式,自带裁剪功能,适配Android7.0
来源:互联网 发布:淘宝营业执照代办真假 编辑:程序博客网 时间:2024/06/05 09:59
不知道为什么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<ImageBean> 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.fileprovider</string>
2.在主module中定义临时授权目录的xml文件
中添加该库的授权目录,代码如下:
<paths> <external-path name="imagepicker" path=""/></paths>
3.修改主module的AndroidManiFest
文件中FileProvider模块,代码如下:
<provider android:name="android.support.v4.content.FileProvider" android:authorities="@string/app_fileprovider_authorities" android:exported="false" android:grantUriPermissions="true" tools:replace="android:authorities"> //避免冲突 <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/fileprovider_path" tools:replace="android:resource"/> //避免冲突</provider>
感谢
项目中裁剪模块修改自开源项目:https://github.com/oginotihiro/cropview
感谢所有为开源做出贡献的人!
- Android自定义图片选取器,类似微信样式,自带裁剪功能,适配Android7.0
- Android自带的裁剪图片功能操作方式
- Android 自带图片裁剪
- Android 图片裁剪功能实现详解(类似QQ自定义头像裁剪)
- Android 图片裁剪功能实现详解(类似QQ自定义头像裁剪)
- Android 图片裁剪功能实现详解(类似QQ自定义头像裁剪)
- Android 图片裁剪功能实现详解(类似QQ自定义头像裁剪)
- Android 图片裁剪功能实现详解(类似QQ自定义头像裁剪)
- Android 图片裁剪功能实现详解(类似QQ自定义头像裁剪)
- Android 图片裁剪功能实现详解(类似QQ自定义头像裁剪)
- Android 图片裁剪功能实现详解(类似QQ自定义头像裁剪)
- Android 图片裁剪功能实现详解(类似QQ自定义头像裁剪)
- 上传图片裁剪处理-调用android系统自带的裁剪功能
- android 调用系统自带的选择图片 然后进行自定义大小裁剪
- android studio 适配android7.0 android 6.0拍照调用系统裁剪工具实现头像上传功能
- 自定义View——类似微信裁剪控件
- Android借助系统自带图片裁剪集成图片选择以及7.0适配
- intent 实现android自带的图片裁剪
- 多重背包问题
- 文章标题
- 怎么判断List集合是否为空?
- 蓝桥杯:算法训练 6-1 递归求二项式系数值
- Android onKeyDown自定义功能
- Android自定义图片选取器,类似微信样式,自带裁剪功能,适配Android7.0
- VoLTE、VoWiFi和VoIP有什么不同?
- HTTP POST GET 本质区别详解
- Myeclipse下删掉jar包之后出现感叹号或者在Libraries下面报错的处理方法
- Vue2.0+CKeditor
- Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 1)
- 神经网络一些概念
- 靶形数独
- c++远征之封装篇(this指针)