android matisse按钮调用,Android开源之Matisse图片选择器简介

Android开源之Matisse图片选择器简介,很多 App 都有选取图片的需求,例如在 IM 中发送图片,在内容编辑的时候插入图片。Android 系统中的组件可以帮助我们大大减少开发负担,我们可以通过

1A2124C2-0.jpg

很多 App 都有选取图片的需求,例如在 IM 中发送图片,在内容编辑的时候插入图片。Android 系统中的组件可以帮助我们大大减少开发负担,我们可以通过

Intent toGallery = new Intent(Intent.ACTION_GET_CONTENT);toGallery.setType("image/*");toGallery.addCategory(Intent.CATEGORY_OPENABLE);startActivityForResult(toGallery, REQUEST_GALLERY);

打开系统中支持文件选择的 Activity 选择图片。但是如果我们想要更符合业务场景的界面和交互,同时保证不同移动平台上的体验一致,上面这种做法就不能满足需求了。于是我们选择实现自己的图片选择器 Matisse。

让我们先来看看 Matisse 图片选择器是什么样子:

1A2124Z8-1.jpg

78ae5fbe7c2cccba991435877c1146e3.png

知乎 App 是支持日夜间模式的,因此 Matisse 也需要具备这个功能。但是作为一个开源库,不能依赖主 App 的日夜间模式的实现,我们为 Matisse 内置了两套主题,蓝色的 Zhihu 主题和暗色的 Dracula 主题。它们是通过先定义一套自定义属性,再在此基础上各自定义一个 theme,在创建图片选择器 Activity 的时候,应用这个 theme。如果两套内置主题不能满足你的需求,你也可以定义自己的 theme。

Matisse 的调用非常简单,使用了 Builder 模式,只需要在调用的时候传入想要的参数,后续的事情就不用你操心了。一个调用的例子如下:

Matisse.from(MainActivity.this).choose(MimeType.of(MimeType.JPEG, MimeType.PNG, MimeType.GIF)).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);

通过上面的调用示例,你应该也可以猜到我们的接口大致有哪些功能:

支持包括 JPEG, PNG, GIF 图片类型的选择。后面可能还会支持视频内容的选择;

支持有序选择图片,也即选择图片的时候会有 1, 2, 3, 4… 样式的 CheckBox;

支持指定最大可选数量;

支持定义筛选规则,你可以针对特定图片类型集合,制定完全自定义的筛选规则;

可以定义图片缩略图的缩放比例。缩放比例越大,缩略图越清晰,但是列表滑动的时候,缩略图的加载也相应比较慢;

支持横竖屏。Matisse 做了状态保存的工作,因此不需要担心应用 configuration 变化带来的困扰,包括横竖屏的转换;

支持不同的图片加载库,目前支持 Glide 和 Picasso。如果 Glide 和 Picasso 都不是你需要的,可以通过实现一个图片加载接口,定义自己的图片加载引擎。很抱歉,我们暂时不支持 Fresco。

在数据加载方面,我们使用 Loader 作为相册和相册图片数据的加载机制,它可以很方便地异步获取系统 MediaStore 中的图片数据,只需定义好回调接口,数据就会自动返回到 UI 线程上。同时,在应用 configuration 改变的时候,页面可以重新连接上之前的 Loader,无需重新查询数据。如果你没用过 Loader,可以回忆一下 AsyncTask,它们用起来的感觉差不多,只不过 Loader 是一个更加强大的异步加载框架。

我们并没有采用 MV* 这些帮助代码实现分层解耦的架构,也尽量避免加入过多的第三方库的依赖。获取图片数据并进行展示是一件略繁琐的事情,因此这个库的代码并不是十分优雅。但是 Matisse 为你屏蔽了这些繁琐的逻辑和界面展示的细节,你要做的只是添加依赖,并通过几行代码进行调用即可。

Matisse 简单易用,可以满足你对于图片选择的基本需求。我们已经在知乎 Android App 内使用了 Matisse,也在 GitHub 上开源了它,感兴趣的同学可以看一下源码 zhihu/Matisse ,想吐槽或者提 bug 的可以提 issue,觉得有写的不好的地方,或希望添加新功能,也欢迎提 PR。

以上就是对于安卓开发方面的知识点简介,Android开源之Matisse图片选择器简介,更多相关内容请继续关注拓胜科技安卓技术频道,或者需要了解拓胜安卓培训方面的问题,可以在线免费咨询拓胜教育老师。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值