• Stars
    star
    198
  • Rank 196,898 (Top 4 %)
  • Language
    Java
  • Created over 5 years ago
  • Updated almost 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

基于知乎Matisse增强,一行代码实现图片/视频选择,裁剪,微信同款视频录制和拍照,无需权限申请!

Matisse

知乎Matisse的增强版,简化了使用,优化了用户体验,功能上集成了UCrop + CameraView

功能

  • 拍摄照片和视频,或者只拍摄照片,或者只拍视频
  • 支持照片裁剪
  • 自动申请所需所有权限,无需额外操作
  • Matisse本身所有功能

预览

Image Image Image

使用

Download

implementation 'com.lxj:matisse:最新版本'

如何使用

最简单一行代码即可调用:

Matisse.from(SampleActivity.this)
    .choose(MimeType.ofAll()) //显示所有文件类型,比如图片和视频,
    .capture(true)//是否显示拍摄按钮,默认不显示
    //.capture(true, CaptureMode.All)//是否显示拍摄按钮,可以同时拍视频和图片
    .isCrop(true)//开启裁剪,默认不开启
    //.imageEngine(new GlideEngine()) //默认是Glide4.x版本的加载器,如果你用的是Glide4.x,则无需设置
    //.imageEngine(new Glide3Engine())//如果你用的是Glide3.x版本,请打开这个,Glide3Engine这个类在demo中
    .forResult(REQUEST_CODE_CHOOSE); //请求码

直接跳转拍摄界面:

Matisse.from(SampleActivity.this)
    .jumpCapture()//直接跳拍摄,默认可以同时拍摄照片和视频
    //.jumpCapture(CaptureMode.Image)//只拍照片
    //.jumpCapture(CaptureMode.Video)//只拍视频
    .isCrop(true) //开启裁剪
    .forResult(REQUEST_CODE_CHOOSE);

详细设置:

Matisse.from(SampleActivity.this)
    .choose(MimeType.ofAll())
    .capture(true) //默认只能拍照片
    //.capture(true, CaptureMode.All)//通过CaptureMode控制拍照照片还是视频,或者都拍
    .maxSelectable(9) //默认最大选中9张,设置为1就是单选
    .theme(R.style.Matisse_Dracula)//暗色主题
    //添加图片过滤器,比如过滤掉小于10K的图片
    .addFilter(new GifSizeFilter(320, 320, 5 * Filter.K * Filter.K))
    //设置选中图片的监听器
    .setOnSelectedListener(new OnSelectedListener() {
        @Override
        public void onSelected(
                @NonNull List<Uri> uriList, @NonNull List<String> pathList) {
            // DO SOMETHING IMMEDIATELY HERE
            Log.e("onSelected", "onSelected: pathList=" + pathList);

        }
    })
    .originalEnable(true)//是否显示原图,默认显示
    //设置原图选中和取消选中的监听器
    .setOnCheckedListener(new OnCheckedListener() {
        @Override
        public void onCheck(boolean isChecked) {
            // DO SOMETHING IMMEDIATELY HERE
            Log.e("isChecked", "onCheck: isChecked=" + isChecked);
        }
    })
    //.imageEngine(new GlideEngine()) // 默认是Glide4.x版本的加载器,如果你用的是Glide4.x,则无需设置
    //.imageEngine(new Glide3Engine())//如果你用的是Glide3.x版本,Glide3Engine这个类在demo中
    //.imageEngine(new PicassoEngine())//如果你用的是Picasso
    .forResult(REQUEST_CODE_CHOOSE); //请求码

接收结果

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CODE_CHOOSE && resultCode == RESULT_OK) {
        //获取拍摄的图片路径,如果是录制视频则是视频的第一帧图片路径
        String captureImagePath = Matisse.obtainCaptureImageResult(data);

        //获取拍摄的视频路径
        String captureVideoPath = Matisse.obtainCaptureVideoResult(data);

        //获取裁剪结果的路径,不管是选择照片裁剪还是拍摄照片裁剪,结果都从这里取
        String cropPath = Matisse.obtainCropResult(data);

        //获取选择图片或者视频的结果路径,如果开启裁剪的话,获取的是原图的地址
        Matisse.obtainSelectUriResult(data);//uri形式的路径
        Matisse.obtainSelectPathResult(data)//文件形式路径
    }
}

混淆

如果你使用Picasso:

-dontwarn com.squareup.picasso.**

如果你使用Glide:

-dontwarn com.bumptech.glide.**

More Repositories

1

XPopup

🔥XPopup2.0版本重磅来袭,2倍以上性能提升,带来可观的动画性能优化和交互细节的提升!!!功能强大,交互优雅,动画丝滑的通用弹窗!可以替代Dialog,PopupWindow,PopupMenu,BottomSheet,DrawerLayout,Spinner等组件,自带十几种效果良好的动画, 支持完全的UI和动画自定义!(Powerful and Beautiful Popup for Android,can absolutely replace Dialog,PopupWindow,PopupMenu,BottomSheet,DrawerLayout,Spinner. With built-in animators , very easy to custom popup view.)
Java
7,689
star
2

AndroidKTX

🔥Some very useful kotlin extensions for speed android development!好用到爆的Kotlin扩展,加速你的Android开发!
C
770
star
3

XPopupExt

XPopup扩展功能库,基于XPopup强大的弹窗能力和PickerView的选择器逻辑,封装了时间选择器弹窗、城市选择器弹窗和条件选择器。
Java
332
star
4

StateLayout

一种无侵入,使用简单,无需修改现有布局,动态切换布局状态(Loading/Error/Empty/Content)的解决方案。
Kotlin
176
star
5

XRefreshLayout

【已过时,不再更新,请使用更强大的SmartRefreshLayout!】A refresh layout(无侵入下拉刷新和加载布局), can refresh RecyclerView for all LayoutManager, NestedScrollView。
Java
127
star
6

ShootPlane

微信打飞机的简易版,主要用Android的属性动画实现!
Java
113
star
7

OkhttpDownloader

a multi-thread downloader for okhttp!
Java
86
star
8

AlipayUtil

[不再维护!!!]支付宝支付SDK的封装,只需要调用一个方法,传入参数和回调接口即可,像请求网络一样简单!
Java
58
star
9

MarqueeView

垂直跑马灯效果。
Java
47
star
10

OkHttpEngine

A simple wrapper for OkHttp!
Java
38
star
11

EasyAdapter

An simplify and practical version for hongyangAndroid [baseAdapter],重构了代码,并适配Kotlin。
Kotlin
33
star
12

LiveGiftPlayer

直播礼物特效播放器,支持MP4(支持4个方向的透明通道)和WEBP。
Java
23
star
13

DragPanel

A nice vertical drag layout, a bit like BottomSheet, but with strong customization!
Java
22
star
14

ImageGridView

【不再维护】微博,微信九宫格图片布局,搭配XPopup的大图浏览弹窗,体验好到飞起。
Java
19
star
15

XPermission

一行代码进行权限申请,用回调处理结果,轻量无依赖!
Java
19
star
16

DragPhotoViewer

【已过时,不再更新,请使用更强大的XPopup!】完全模仿掘金Android App大图浏览拖拽效果!
Java
18
star
17

QingBlogFrontend

Qing博客系统前端,基于Vue2套件,axios, ElementUI构建的单页应用!
Vue
14
star
18

RippleLayout

A simple ripple effect!
Java
13
star
19

flutter_gank

A flutter client for http://gank.io/
Dart
12
star
20

QingBlogBackend

Qing博客系统后台,基于Koa2和NodeJs编写。
JavaScript
4
star
21

QingFramework

采用Kotlin封装的Android快速开发框架,包括基于LiveData的MVVM架构和通用组件。
Kotlin
4
star
22

li-xiaojun.github.io

My personal Github pages test!
HTML
3
star
23

flutter_study

for study flutter.
Dart
3
star
24

crypto-wrapper

A simple wrapper for node crypto module, zero dependency, easy to use!
JavaScript
3
star
25

multipage-vue-spa

基于vue-cli重构的大型多页面SPA项目架构。
JavaScript
1
star
26

FrameAnimationView

一个帧动画实现,用来替换官方的AnimationDrawable,解决内存溢出!
Kotlin
1
star
27

GayHub

A Github Android Client ! 【Developping...】
Kotlin
1
star
28

ffshare

随启随用的文件分享工具,一条命令即可启动!
JavaScript
1
star