Matisse

项目地址:zhihu/Matisse 

简介::fireworks: A well-designed local image selector for Android

 

 

Matisse is a well-designed local image and video selector for Android. You can

  • Use it in Activity or Fragment
  • Select images including JPEG, PNG, GIF and videos including MPEG, MP4
  • Apply different themes, including two built-in themes and custom themes
  • Different image loaders
  • Define custom filter rules
  • More to find out yourself
Zhihu Style Dracula Style Preview

Download

Gradle:

repositories {    jcenter()}dependencies {    compile 'com.zhihu.android:matisse:$latest_version'}

Check out Matisse releases to see more unstable versions.

ProGuard

If you use Glide as your image engine, add rules as Glide's README says.
And add extra rule:

-dontwarn com.squareup.picasso.**

If you use Picasso as your image engine, add rules as Picasso's README says.
And add extra rule:

-dontwarn com.bumptech.glide.**

Attention: The above progurad rules are correct.

How do I use Matisse?

Permission

The library requires two permissions:

  • android.permission.READ_EXTERNAL_STORAGE
  • android.permission.WRITE_EXTERNAL_STORAGE

So if you are targeting Android 6.0+, you need to handle runtime permission request before next step.

Simple usage snippet


Start MatisseActivity from current Activity or Fragment:

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())        .forResult(REQUEST_CODE_CHOOSE);

Themes

There are two built-in themes you can use to start MatisseActivity:

  • R.style.Matisse_Zhihu (light mode)
  • R.style.Matisse_Dracula (dark mode)

And Also you can define your own theme as you wish.

Receive Result

In onActivityResult() callback of the starting Activity or Fragment:

List mSelected;@Overrideprotected 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);    }}

更多相关文章

  1. android获取mac地址
  2. Android(安卓)不能生成R文件,gen目录为空
  3. android 开源项目(城市定位)
  4. android 开源项目(城市定位)
  5. Android(安卓)近百个项目的源代码
  6. Android(安卓)NDK JNI 入门笔记-day01-创建项目并运行
  7. Android(安卓)video streaming and encoder
  8. MQTT的学习研究(十五) MQTT 和android整合文章
  9. Android(安卓)NDK JNI 入门笔记-day01-创建项目并运行

随机推荐

  1. Android 8位颜色值和6位颜色值的区别
  2. ReactNative 在用react-navigation组件时
  3. Log4j Android
  4. Android(安卓)Application Lifecycle(Fin
  5. Android使用Dialog实现贴键盘输入框(类似
  6. eclipse添加android插件错误处理方法
  7. android am 启动activity service or bro
  8. Android 各种类型的资源 文件
  9. Android开发:Android快速开发不可或缺的11
  10. android 外挂字幕接口