Skip to content

Releases: leavesczy/Matisse

v3.0.0

Choose a tag to compare

@leavesczy leavesczy released this 05 Oct 04:33

相对 2.3.2 的破坏性升级。公开 API、默认行为、主题资源和图片引擎接入都有变化;升级后需要改宿主代码,不能只更新版本号。

接入方式仍是 MatisseContract / MatisseCaptureContract。详见 接入指南。

破坏性变更

Matisse

  • fastSelect → returnOnTap(点击缩略图立即返回;开启时 maxSelectable 必须为 1,选择器内拍照成功同样立即返回)
  • singleMediaType → allowMixedMedia。旧字段为 true 时只能选图片或只能选视频;新字段为 true 时允许一次结果里同时包含图片和视频。2.3.2 默认允许同时选择;3.0.0 默认不允许,需要时必须写 allowMixedMedia = true
  • gridColumns 默认由 4 改为 3。仍要 4 列需显式传入
  • MediaType.MultipleMimeType → MediaType.MimeTypes,且每项必须以 image/ 或 video/ 开头
  • includeImage / includeVideo → includesImage / includesVideo
  • 删除 mediaFilter / MediaFilter / DefaultMediaFilter
  • mediaType 不含图片时,captureStrategy 必须为 null;MediaType.MimeTypes 启用拍照时必须包含 image/jpeg。不满足约束会在构造时抛出 IllegalArgumentException

MediaResource

  • 只保留 uri、mimeType
  • 删除 path、name、size;需要文件路径或大小时,用 uri 自行查询

ImageEngine

  • 接口方法 Image() 更名为 Preview()。自定义引擎必须改方法名,并按新约定实现:
    • Thumbnail:网格和相册列表。外层已是有界格子,应填满容器,允许裁切
    • Preview:预览页。图片保持宽高比、不裁切,超出区域时自行提供查看完整内容的方式(例如纵向滚动);视频只展示静态封面,播放由 Matisse 负责
  • CoilImageEngine:
    • 2.3.2 只需 coil-compose,coil-video / coil-gif 按需添加
    • 3.0.0 必须同时添加 coil-compose 和 coil-video
    • 要在预览页播放 GIF 等动图,还需 coil-gif,并在 Application 中通过 SingletonImageLoader.setSafe 向宿主 ImageLoader 注册 Decoder
  • GlideImageEngine:依赖改为 com.github.bumptech.glide:compose(Glide 5.x)

CaptureStrategy

  • createImageUri → createCaptureUri
  • loadResource → loadCapturedMedia
  • onTakePictureCanceled → deleteCaptureUri(取消、失败、读不到结果、Uri 已创建但未交给相机时都会调用;实现须可重复执行)
  • 删除 getCaptureExtra() 以及内置策略上的 extra Bundle
  • FileProviderCaptureStrategy 不再开放继承;要换存储目录请自行实现 CaptureStrategy

主题与资源

  • 删除独立视频页及主题 Matisse.Theme.VideoView
  • color / string / bool 全部换名,默认配色已更换;默认文案为英文,中文在 values-zh
  • 图标改为 XML 矢量(ic_matisse_*),覆盖同名 drawable 即可自定义

权限

  • 库 Manifest 仍不声明媒体读取权限;宿主必须按 mediaType 自行声明 READ_MEDIA_IMAGES / READ_MEDIA_VIDEO 或 READ_EXTERNAL_STORAGE
  • CAMERA 仍为可选:宿主声明后 Matisse 会在需要时申请,未声明则直接启动系统相机

新增

  • 通过 Paging3 分页加载相册
  • Android 14 部分媒体访问:宿主声明 READ_MEDIA_VISUAL_USER_SELECTED 后,可接受部分授权;非完整访问时再次进入会重新打开系统授权页
  • 视频在预览页内联播放,不再跳转独立页面
  • 选择器内拍照成功后插入列表首位并继续选择;returnOnTap 开启时拍照成功立即返回
  • 单选预览页可直接确认
  • 无权限、无内容、加载失败的空状态
  • CoilImageEngine / GlideImageEngine:
    • Android 10+ 的 MediaStore 媒体优先读取系统缩略图,失败或非 MediaStore Uri 时再回退为原图解码 / 视频抽帧
    • 网格、相册封面与预览占位共用同一份缩略图内存缓存
    • Preview 加载完成前先展示缩略图缓存;非视频大图按容器宽度等比展示并支持纵向滚动,超大图会降采样

改进

  • MediaStoreCaptureStrategy 不再设置 IS_PENDING,兼容更多系统相机写入
  • 相机返回后加长等待,减少文件尚未写完就当作失败的情况
  • 相册加载改为页内指示,不再使用独立 Loading Dialog
  • 选择器进入 / 退出不再使用自定义 Activity 转场动画
  • CoilImageEngine / GlideImageEngine 所用依赖仍为 compileOnly,由宿主按所选引擎引入

依赖

  • Compose Bom:2026.04.01 → 2026.09.00
  • AndroidX AppCompat:1.7.1 → 1.8.0
  • AndroidX Lifecycle:2.10.0 → 2.11.0
  • 新增 androidx.paging:paging-compose:3.5.1
  • 移除 material-icons-extended,图标改为 XML 矢量图
  • Kotlin:2.3.21 → 2.4.20
  • Android Gradle Plugin:9.2.0 → 9.4.1

2.3.2

Choose a tag to compare

@leavesczy leavesczy released this 01 May 10:24
  • 升级依赖库:kotlin 升级到 2.3.21、compose-bom 升级到 2026.04.01
  • 优化实现逻辑

Full Changelog: 2.3.1...2.3.2

2.3.1

Choose a tag to compare

@leavesczy leavesczy released this 13 Apr 11:15
  • 升级依赖库:compose-bom 升级到 2026.03.01、androidx-activity-compose 升级到 1.13.0
  • kotlin 降级到 2.0.0,减少版本兼容性问题

Full Changelog: 2.3.0...2.3.1

2.3.0

Choose a tag to compare

@leavesczy leavesczy released this 05 Jan 04:27
  • 升级依赖库:kotlin 升级到 2.3.0、compose-bom 升级到 2025.12.01、androidx-activity-compose 升级到 1.12.2
  • 查询媒体资源时不再对文件大小进行过滤
  • MediaResource 新增 size 属性值,对应查询到的文件大小
  • MediaFilter 接口内部均改为 suspend 方法

Full Changelog: 2.2.3...2.3.0

2.2.3

Choose a tag to compare

@leavesczy leavesczy released this 13 Dec 07:35
  • 升级依赖库:kotlin 升级到 2.2.21、compose-bom 升级到 2025.12.00、androidx-activity-compose 升级到 1.12.1
  • minSdk 提升到 23

Full Changelog: 2.2.2...2.2.3

2.2.2

Choose a tag to compare

@leavesczy leavesczy released this 12 Sep 08:29
  • 升级依赖库:kotlin 升级到 2.2.20、compose-bom 升级到 2025.09.00、androidx-activity-compose 升级到 1.11.0
  • 适配 glide-compose 的 1.0.0-beta07 版本
  • compileSdk 提升到 36

Full Changelog: 2.2.1...2.2.2

2.2.1

Choose a tag to compare

@leavesczy leavesczy released this 14 Aug 14:11
  • 升级依赖库:kotlin 升级到 2.2.10、compose-bom 升级到 2025.08.00、androidx-appcompat 升级到 1.7.1
  • 优化 MediaStoreCaptureStrategy 的图片加载逻辑,减少加载耗时
  • 修改 CoilImageEngine 和 GlideImageEngine 的实现方式,在图片加载完成后不显示背景色

2.2.0

Choose a tag to compare

@leavesczy leavesczy released this 15 May 08:26
  • 升级依赖库:kotlin 升级到 2.1.21、compose-bom 升级到 2025.05.00
  • 允许外部继承 FileProviderCaptureStrategy,以便自定义图片存储目录
  • 将 FileProviderCaptureStrategy 直接作为 SmartCaptureStrategy 的构造参数,并移除 SmartCaptureStrategy 的 extra 构造参数
  • 删除 matisse_image_span_count,改为通过 gridColumns 参数来动态传值
  • 删除 Coil2 版本的 CoilImageEngine,并将 Coil3 版本的 Coil3ImageEngine 重命名为 CoilImageEngine
  • 为 CoilImageEngine 设置 memoryCacheKey 和 placeholderMemoryCacheKey,并为列表页的图片设置淡入淡出动效
  • 细化当数量达到 maxSelectable 限制后的 Toast 提示语
  • 修复当切换相册后图片列表没有滑动到顶部的问题

2.1.4

Choose a tag to compare

@leavesczy leavesczy released this 06 Mar 09:37
  • 升级依赖库:kotlin 升级到 2.1.10、compose-bom 升级到 2025.02.00、androidx-activity-compose 升级到 1.10.1
  • 为 MediaItem 添加半透明遮罩,避免 CheckBox 被遮掩,对应颜色值 matisse_media_item_scrim_color_when_unselected
  • 处理 Intent getParcelableExtra 方法的系统兼容性问题
  • 优化 UI 细节

2.1.3

Choose a tag to compare

@leavesczy leavesczy released this 06 Dec 08:34
  • 升级依赖库:kotlin 升级到 2.1.0、compose-bom 升级到 2024.11.00、androidx-activity-compose 升级到 1.9.3
  • 新增基于 Coil3 的 ImageEngine:Coil3ImageEngine
  • 优化用于标识 Video 资源的 Icon 样式,避免被视频内容遮掩
  • 为视频播放页四周留出一定间距,避免由于 VideoView 导致手势操作无效