最近在Android
项目开发当中使用到某乎
开源的图片选择器,这篇博客分享一下相关的使用心得,希望对看文章的朋友有所启发。
引入开源库
首先需要在项目级别的build.gradle
当中加入:
repositories {
jcenter()
}
在app
的build.gradle
中加入:
dependencies {
implementation 'com.zhihu.android:matisse:0.5.3-beta3'
}
我发布博客的时候,开源库版本是0.5.3-beta3
。如果你需要最新版本请看开源库文档
代码示例
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())
.showPreview(false) // Default is `true`
.forResult(REQUEST_CODE_CHOOSE);
这是开源库文档中使用范例,我在开发中也是这样使用的,GifSizeFilter
需要从开源库源代码中拷贝出来使用。
选中之后的回调处理:
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);
}
}
注意:使用开源库需要储存权限:
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE
在项目targetSdkVersion >= 30
以上的时候,你需要申请:
android.permission.MANAGE_EXTERNAL_STORAGE
网友评论