内容简介:项目地址:bookmark: FilePicker 是一个小巧快速的文件选择器框架,以快速集成、高自定义化和可配置化为目标不断前进~:triangular_flag_on_post:
AndroidFilePicker
I 简介
:bookmark: FilePicker 是一个小巧快速的文件选择器框架,以快速集成、高自定义化和可配置化为目标不断前进~:triangular_flag_on_post:
II 使用
- 在你的项目中添加依赖
allprojects { repositories { ... maven { url 'https://jitpack.io' } } } 复制代码
dependencies { implementation 'me.rosuh:AndroidFilePicker:latest_version' } 复制代码
latest_version
请自行替换成最新版本
- 开始使用(
Kotlin
)
简单的链式调用示意:
/** * 自定义文件过滤器,此处使用库默认的文件类型 */ private val fileFilter = object : AbstractFileFilter(){ override fun doFilter(listData: ArrayList<FileItemBean>): ArrayList<FileItemBean> { val iterator = listData.iterator() while (iterator.hasNext()){ val item = iterator.next() // 如果是文件夹则略过 if (item.isDir) continue // 判断文件类型是否是图片 if (item.fileType !is RasterImageFileType){ iterator.remove() } } return listData } } ... FilePickerManager.instance .from(this@SampleActivity) // 主题设置 .setTheme(R.style.FilePickerThemeReply) // 自定义过滤器(可选) .filter(fileFilter) .forResult(FilePickerManager.instance.REQUEST_CODE) 复制代码
获取结果 : onActivityResult
接受消息,然后调用 FilePickerManager.obtainData()
获取保存的数据,结果是所选取文件的路径列表( ArrayList<String>()
)
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { when (requestCode) { FilePickerManager.instance.REQUEST_CODE -> { if (resultCode == Activity.RESULT_OK) { val list = FilePickerManager.instance.obtainData() rv!!.adapter = SampleAdapter(R.layout.demo_item, ArrayList(list)) rv!!.layoutManager = LinearLayoutManager(this@SampleActivity) } else { Toast.makeText(this@SampleActivity, "没有选择图片", Toast.LENGTH_SHORT).show() } } } } 复制代码
功能 & 特点
- 链式调用
- 内置四种主题配色 + 可自定义配色
- 查看主题颜色示意图,然后调用
setTheme()
传入自定义主题
- 查看主题颜色示意图,然后调用
- 默认实现多种文件类型
IFileType AbstractFileType
- 公开文件过滤接口
- 实现
AbstractFileFilter
抽象类来定制你自己的文件过滤器,这样可以控制文件列表的展示内容
- 实现
- 多种可配置选项
.
- 公开条目(
item
)选择监听器,可自定义条目被点击的实现
部分源码说明
-
包和文件夹
-
adapter
包:两个列表(导航栏和文件列表)的数据适配器类 -
bean
包:所有用到的Model
类-
IFileBean
是文件对象所需要实现的接口
-
-
config
:管理类、配置类所在-
AbstractFileFilter
:文件过滤器抽象类,用于给调用者自实现文件过滤器 -
AbstractFileType
:文件类型抽象类,用于给调用者自实现自己的文件类型- 其中的抽象函数
fillFileType
为文件甄别器,如果你实现了自己的文件类型,那么最好也要实现自己的文件甄别器
- 其中的抽象函数
-
DefaultFileType
:默认文件类型,文件类型类的默认实现,里面实现了默认的文件甄别器
-
-
filetype
:一些默认实现的文件类型- 实现接口
IFileType
以实现自己的文件类型
- 实现接口
-
utils
:一些 工具 类-
FileUtils
类包含了文件相关的大部分所需的函数 -
PercentLayoutUtils
、PercentTextView
是TextView
的相对布局实现(*1)
-
-
Log
<0.2.0>_2018-11-27
:recycle: :art: :rocket: :memo:
Add
- 链式调用
- 添加文件类型抽象类
- 公开文件类型接口
- 添加文件过滤抽象类
- 公开文件过滤器接口
- 公开条目点击接口,可以自实现条目点击效果
- 添加界面字符串自定义功能
- 返回键返回上层目录功能
- 添加 FilePickerConfig 类保存配置
- 新增四种主题配色
Update
- 文件类型可由调用者自己实现,也可以使用默认实现
- FileItemBean 添加图标资源变量,支持自定义类型图标
- 调用 FilePickerManager.obtainData() 获取数据,Intent 仅作消息发送功能
- 更新部分文件类型默认 icon
- README
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- node.js的Web开发框架的选择?
- 在前端框架的残酷生命周期下,我们该如何选择?
- 大数据生态圈之流式数据处理框架选择
- Element UI框架中巧用树选择器
- 数据分析的三大框架:底层技术、分析建模、工具选择
- 复杂业务下,我们为何选择 Akka 作为异步通信框架?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
500 Lines or Less
Amy Brown、Michael DiBernardo / 2016-6-28 / USD 35.00
This book provides you with the chance to study how 26 experienced programmers think when they are building something new. The programs you will read about in this book were all written from scratch t......一起来看看 《500 Lines or Less》 这本书的介绍吧!
随机密码生成器
多种字符组合密码
RGB HSV 转换
RGB HSV 互转工具