android Matisse圖片選擇器的引入

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); // 設置作爲標記的請求碼

返回的照片和上面不使用相機返回的是一樣的


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章