hi,由于最近琐事太多,很久没有更新博客了,今天抽空给大家分享一个图片下载器Matisse,出自知乎,绝对的精品;
之前也使用过三方的图片选择器,但是Matisse的图片界面效果简直是美翻天,并且Matisse中引入了Glide和Picasso,这两个库可以自行选择;
具体好不好用还是自己去体会吧,反正我是推荐使用的,下面就直接上代码了
首先引入依赖库文件,Matisse显示图片我使用的是Glide
compile 'com.zhihu.android:matisse:0.4.3'
compile 'com.github.bumptech.glide:glide:3.5.2'
当你需要调用图片选择器就用这段代码
Matisse.from(activity)
.choose(MimeType.allOf())//照片视频全部显示
.countable(true)//显示选择的数量
.maxSelectable(1) // 图片选择的最多数量
.gridExpectedSize(MyApplication.getApp().getWidth() / 3 - 5)//图片显示在列表中的大小
.restrictOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)
.thumbnailScale(0.85f) // 缩略图的比例
.imageEngine(new GlideEngine()) // 使用的图片加载引擎
.theme(R.style.Matisse_Zhihu)//主题
.capture(false) //是否提供拍照功能
.forResult(23); // 设置作为标记的请求码
你选择的图片会以一个List返回给你
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 23&& resultCode == RESULT_OK) {
List<Uri> mSelected = Matisse.obtainResult(data);
}
}
拿到图片后你想干嘛,就是你的事了,嘿嘿
如果你想使用相机,就没有这么简单了, 用相机!相机!相机!
如果你只看官方文档,你是无法完成相机的使用
会多几步操作,首先在res下的xml文件夹下新建 filepaths.xml文件
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path
name="my_images"
path="Pictures"/>
</paths>
然后在AndroidManifest文件的application节点下放入
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="包名.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths" />
</provider>
这样配置就完成了,那么在你使用相机和选择图片的时候直接调用
Matisse.from(activity)
.choose(MimeType.allOf())//照片视频全部显示
.countable(true)//显示选择的数量
.maxSelectable(1) // 图片选择的最多数量
.gridExpectedSize(MyApplication.getApp().getWidth() / 3 - 5)//图片显示在列表中的大小
.restrictOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)
.thumbnailScale(0.85f) // 缩略图的比例
.imageEngine(new GlideEngine()) // 使用的图片加载引擎
.theme(R.style.Matisse_Zhihu)//主题
.capture(true) //是否提供拍照功能
.captureStrategy(
new CaptureStrategy(true, "包名.fileprovider"))
.forResult(23); // 设置作为标记的请求码
返回的照片和上面不使用相机返回的是一样的