Matisse是一款精心设计的Android图像和视频选择器。 您可以
在活动或片段中使用它
选择包括JPEG,PNG,GIF和MPEG,MP4等视频的图像
应用不同的主题,包括两个内置主题和自定义主题
不同的图像加载器
定义自定义过滤器规则
Zhihu Style | Dracula Style | Preview |
---|---|---|
![]() |
![]() |
![]() |
Download
Gradle:
repositories {
jcenter()
}
dependencies {
compile 'com.zhihu.android:matisse:0.4.3'
}
ProGuard
如果您使用Glide作为图像引擎,则可能需要以下规则:-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
**[] $VALUES;
public *;
}
# for DexGuard only
-keepresourcexmlelements manifest/application/meta-data@value=GlideModule
-dontwarn com.squareup.okhttp.**
How do I use Matisse?
Permission
The library requires two permissions:
-
android.permission.READ_EXTERNAL_STORAGE
-
android.permission.WRITE_EXTERNAL_STORAGE
So if you are targeting Android 6.0+, you need to handle runtime permission request before next step.
Simple usage snippet
Start MatisseActivity
from current Activity
or Fragment
:
Matisse.from(MainActivity.this)
.choose(MimeType.allOf())
.countable(true)
.maxSelectable(9)
.addFilter(new GifSizeFilter(320, 320, 5 * Filter.K * Filter.K))
.gridExpectedSize(getResources().getDimensionPixelSize(R.dimen.grid_expected_size))
.restrictOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)
.thumbnailScale(0.85f)
.imageEngine(new GlideEngine())
.forResult(REQUEST_CODE_CHOOSE);
Themes
There are two built-in themes you can use to start MatisseActivity
:
-
R.style.Matisse_Zhihu
(light mode) -
R.style.Matisse_Dracula
(dark mode)
And Also you can define your own theme as you wish.
Receive Result
In onActivityResult()
callback of the starting Activity
or Fragment
:
List<Uri> mSelected;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_CHOOSE && resultCode == RESULT_OK) {
mSelected = Matisse.obtainResult(data);
Log.d("Matisse", "mSelected: " + mSelected);
}
}