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 studio 1.0.2 下载地址
  2. 1.0 Kotlin-Android开发简介
  3. Android自动测试之benchmark test 简介
  4. Android Activity 简介
  5. 【Android 内存优化】Bitmap 长图加载 ( BitmapRegionDecoder 简
  6. Android获取IP地址
  7. Android 获得本机ip地址和MAC地址
  8. Android获取当前网络状态和获取当前设备网络ip地址

随机推荐

  1. mysql sql99语法 内连接非等值连接详解
  2. mysql索引使用率监控技巧(值得收藏!)
  3. Mysql中mysql.user用户表详解
  4. sql脚本函数编写postgresql数据库实现解
  5. win10 64位 MySQL8.0下载和安装教程图解
  6. Mysql大型SQL文件快速恢复方案分享
  7. Mysql在线回收undo表空间实战记录
  8. MySQL关于ERROR 1290 (HY000)报错解决方
  9. MySQL使用Replace操作时造成数据丢失的问
  10. MySQL 数据库铁律(小结)