美文网首页Android收藏集Android杂项安卓UI
Android 知乎图片选择器 Matisse

Android 知乎图片选择器 Matisse

作者: JYangkai | 来源:发表于2019-03-12 21:26 被阅读113次

    正文

    今天我们来学习下如何集成知乎的图片选择器Matisse
    下面我们就来看看如何在我们的项目中使用Matisse

    配置Gradle

    首先我们要对Gradle进行配置

    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        //noinspection GradleCompatible
        implementation 'com.android.support:appcompat-v7:28.0.0'
        implementation 'com.android.support.constraint:constraint-layout:1.1.3'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'com.android.support.test:runner:1.0.2'
        androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
        
        implementation 'com.zhihu.android:matisse:0.5.1'//知乎图片选择器
    }
    

    在dependencies下导入Matisse,使用:implementation 'com.zhihu.android:matisse:0.5.1'

    开始使用

    我们可以在我们的项目的任何地方使用,但是你要注意一些问题,比如生命周期,非主线程不能进行UI操作等

    /**
     * 打开知乎图片选择器
     */
    private void startMatisse() {
        Matisse.from(RegisterActivity.this)
                .choose(MimeType.ofImage())
                .countable(true)
                .maxSelectable(1)
                .restrictOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)
                .thumbnailScale(0.85f)
                .theme(R.style.Matisse_Zhihu)
                .imageEngine(new Glide4Engine())
                .forResult(0);
    }
    

    我们可以看到Matisse的使用非常简单,只需要配置一些选项就可以了,那么我们从Matisse选择器上选择到的视频或者图片是在哪里获取呢,我们注意到Matisse中有一个选项是forResult(0),是不是和startActivityForResult()有点类似啊,所以我获取的视频和图片是在Activity的onActivityResult回调方法里得到的

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK) {
            switch (requestCode) {
                case 0:
                    Matisse.obtainPathResult(data);
                    break;
                default:
                    break;
            }
        }
    }
    

    视频和图片的本地地址就在data里面

    看到这里,可以能有的朋友已经在开始尝试运行了,但是要注意了,这里我们还忘记写了一个东西,那就是权限,我们在AndroidMainfest.xml中加入权限

    <!-- sd卡存储 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <!-- 摄像头 -->
    <uses-permission android:name="android.permission.CAMERA" />
    

    还要注意的一点是,如果你是运行在6.0及以上的Android系统的话,那么要动态的去申请权限,因为读写手机内存和开启摄像头都是危险权限,我们需要手动去申请

    好了,今天的内容就到这里。

    相关文章

      网友评论

        本文标题:Android 知乎图片选择器 Matisse

        本文链接:https://www.haomeiwen.com/subject/joeopqtx.html