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); // 設置作爲標記的請求碼
返回的照片和上面不使用相機返回的是一樣的