我的引言

Matisse,知乎开源,简洁,易用,不错的图片选择库。

效果预览

知乎开源图片选择库 Matisse_java

项目简介

1、直接在 Activity 和 Fragment 中调用即可;

2、支持的图片格式有 JPEG、PNG、GIF,并且支持 MPEG、MP4 格式的视频;

3、内置两种不同的主题,并且可以自定义主题;

4、支持选择不同的图片加载器,如 Picasso、Glide;

5、支持不同的筛选规则;

6、支持横竖屏切换;

使用说明

app/build.gradle:

repositories {
    jcenter()
}

dependencies {
    implementation 'com.zhihu.android:matisse:0.5.0-alpha4'
}

代码调用:

Matisse.from(SampleActivity.this)
        //图片/视频格式
        .choose(MimeType.ofAll(), false)
        //设置主题,默认知乎主题
        .theme(R.style.Matisse_Dracula)
        //设置选取数自动增加
        .countable(true)
        //是否带拍照
        .capture(true)
        //设置保存图片权限策略
        .captureStrategy(
                new CaptureStrategy(true"com.zhihu.matisse.sample.fileprovider"))
        //图片选取最大数
        .maxSelectable(9)
        //选择item增加过滤器
        .addFilter(new GifSizeFilter(3203205 * Filter.K * Filter.K))
        //设置媒体网格的期望大小,以适应不同屏幕大小
        .gridExpectedSize(
                getResources().getDimensionPixelSize(R.dimen.grid_expected_size))
        //设置Activity方向
        .restrictOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
        //设置图片缩略图
        .thumbnailScale(0.85f)
        //设置图片引擎,默认Glide
        .imageEngine(new GlideEngine())
        //开始选取照片、等待结果
        .forResult(REQUEST_CODE_CHOOSE);

onActivityResult:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CODE_CHOOSE && resultCode == RESULT_OK) {
       List<Uri> mUris =Matisse.obtainResult(data);
       List<String> mPaths=Matisse.obtainPathResult(data);
    }
}

源码地址

https://github.com/zhihu/Matisse

源码是很值得去看看,不是很难,但很多地方如 Builder 模式、图片引擎等值得学习。