android图库选择器Matisse的应用

图库选择器Matisse的应用

  • 欢迎使用Matisse图库选择器
    • 添加依赖
    • 添加权限
    • 代码混淆
    • 代码应用

欢迎使用Matisse图库选择器

Matisse是一款精心设计的Android本地图像和视频选择器。您可以

  • 在Activity或Fragment中使用它
  • 选择包括JPEG,PNG,GIF和视频在内的图像,包括MPEG,MP4
  • 应用不同的主题,包括两个内置主题和自定义主题
  • 不同的图像加载器
  • 自定义过滤规则

添加依赖

repositories {
    jcenter()
}

dependencies {
    compile 'com.zhihu.android:matisse:$latest_version'
}

添加权限

android.permission.WRITE_EXTERNAL_STORAGE

代码混淆

如果您使用Picasso作为图像引擎,请添加规则:
-dontwarn com.squareup.picasso.**

如果您使用Glide作为图像引擎,请添加规则:
-dontwarn com.bumptech.glide.**

代码应用

       /**
         * choose是选择的内容,
         * showSingleMediaType()是否只显示选择的类型的缩略图,
         * capture()是否提供拍照功能
         * captureStrategy()存储位置
         * countable()是否显示选中数量,
         * maxSelectable()最大选择数,
         * addFilter()添加一个过滤器,是在我们选择的类型上进一步过滤。
         * Filter接口有两个方法,第一个方法返回需要过滤的数据类型,第二个方法决定是否过滤,
         * gridExpectedSize()缩略图展示的大小,建议120dp
         * thumbnailScale(0.87f)缩略图的清晰程度(与内存占用有关)。
         * imageEngine()是我们自定义加载图片框架。
         * 过滤的话就return new IncapableCause("过滤的原因"); 填入过滤的原因即可。
         * theme主题色,R.style.Matisse_Zhihu (灯光模式),R.style.Matisse_Dracula (暗模式)
         * restrictOrientation屏幕方向
         * originalEnable是否支持原图
         * maxOriginalSize原图大小
         * autoHideToolbarOnSingleTap是否自动隐藏Toolbar
         */
        Matisse.from(CommonBrowserActivity.this)
                .choose(MimeType.ofImage(), true)
                .showSingleMediaType(true)
                .capture(true)
                .captureStrategy(new CaptureStrategy(true, "这里填写配置文件中provider的authorities值", "目录名称"))
                .countable(true)
                .maxSelectable(9)
                .theme("这里可以自定义主题风格")
                .addFilter(new Filter() {
                    @Override
                    protected Set constraintTypes() {
                        return new HashSet() {
                            {
                                add(MimeType.GIF);
                            }
                        };
                    }

                    @Override
                    public IncapableCause filter(Context context, Item item) {
                        if (!needFiltering(context, item)) {
                            return null;
                        } else {
                            return new IncapableCause(IncapableCause.DIALOG, "暂不支持您选择的图片类型");
                        }
                    }
                })
                .setOnSelectedListener(new OnSelectedListener() {
                    @Override
                    public void onSelected(List uriList, List pathList) {
                    }
                })
                .restrictOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
                .thumbnailScale(0.95f)
                .imageEngine("图片选择框架默认Glide v3,如果你使用的是Glide v4则需要自己实现")
                .forResult("这里填写请求码,用于结果回调");
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == Activity.RESULT_OK) {
            if (requestCode == "这里是你的请求码") {
                // 返回结果
                List list = Matisse.obtainResult(data);
                // 具体业务逻辑实现
            }
        }
    }

你可能感兴趣的:(android开源框架)