Charles - Android本地多媒体选择器

Charles - Android本地多媒体选择器

Android小彩虹2021-07-23 19:10:06260A+A-

Build Status Download

Charles is a local file selector for Android. You can

  • Use it in Activity or Fragment
  • Select multi-media file including images, videos, audio and documents
  • Apply different themes, including two built-in themes and custom themes
  • Restrict different screen orientations
  • Find more by yourself
Charles Style Charles Dark Style Empty View
Charles Style Empty View Charles Empty Layout

Download

Gradle

  • Add the JitPack repository to your root build.gradle file:
repositories {
    maven { url "https://jitpack.io" }
}
  • Add the code to your module's build.gradle file:
dependencies {
    implementation 'io.github.tonnyl:charles:x.y.z'
}

Maven

<dependency>
  <groupId>io.github.tonnyl</groupId>
  <artifactId>charles</artifactId>
  <version>x.y.z</version>
  <type>pom</type>
</dependency>

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.

Usage

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 CharlesActivity from current Activity or Fragment:

Charles.from(this@MainActivity)
        .choose()
        .maxSelectable(9)
        .progressRate(true)
        .theme(R.style.Charles)
        .imageEngine(GlideEngine())
        .restrictOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)
        .forResult(REQUEST_CODE_CHOOSE)

Themes

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

  • R.style.Charles (light mode)
  • R.style.CharlesDark (dark mode)

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

Receive Result

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

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == REQUEST_CODE_CHOOSE && resultCode == Activity.RESULT_OK) {
        val uris = Charles.obtainResult(data)
        val paths = Charles.obtainPathResult(data)

        Log.d("charles", "uris: $uris")
        Log.d("charles", "paths: $paths")
    }
}

More

Find more details about Charles in wiki.

Contribution

Discussions and pull requests are welcomed .

Thanks

This library is inspired by Matisse and uses some of its source code.

License

Charles is under the MIT license. See the LICENSE for more information.

点击这里复制本文地址 以上内容由权冠洲的博客整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

支持Ctrl+Enter提交

联系我们| 本站介绍| 留言建议 | 交换友链 | 域名展示
本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除

权冠洲的博客 © All Rights Reserved.  Copyright quanguanzhou.top All Rights Reserved
苏公网安备 32030302000848号   苏ICP备20033101号-1
本网站由 提供CDN/云存储服务

联系我们