一个小巧快速的 Android 文件选择器框架

栏目: Android · 发布时间: 5年前

内容简介:项目地址:bookmark: FilePicker 是一个小巧快速的文件选择器框架,以快速集成、高自定义化和可配置化为目标不断前进~:triangular_flag_on_post:
一个小巧快速的 Android 文件选择器框架

AndroidFilePicker

项目地址 github.com/rosuH/Andro…

I 简介

:bookmark: FilePicker 是一个小巧快速的文件选择器框架,以快速集成、高自定义化和可配置化为目标不断前进~:triangular_flag_on_post:

II 使用

  1. 在你的项目中添加依赖
allprojects {
    repositories {
	    ...
    	maven { url 'https://jitpack.io' }
    }
}
复制代码
dependencies {
    implementation 'me.rosuh:AndroidFilePicker:latest_version'
}
复制代码

latest_version 请自行替换成最新版本

  1. 开始使用( 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()
                }
            }
        }
    }
复制代码

功能 & 特点

  1. 链式调用
  2. 内置四种主题配色 + 可自定义配色
    • 查看主题颜色示意图,然后调用 setTheme() 传入自定义主题
  3. 默认实现多种文件类型
    IFileType
    AbstractFileType
    
  4. 公开文件过滤接口
    • 实现 AbstractFileFilter 抽象类来定制你自己的文件过滤器,这样可以控制文件列表的展示内容
  5. 多种可配置选项
    .
    
  6. 公开条目( item )选择监听器,可自定义条目被点击的实现

部分源码说明

  1. 包和文件夹

    • adapter 包:两个列表(导航栏和文件列表)的数据适配器类

    • bean 包:所有用到的 Model

      • IFileBean 是文件对象所需要实现的接口
    • config :管理类、配置类所在

      • AbstractFileFilter :文件过滤器抽象类,用于给调用者自实现文件过滤器
      • AbstractFileType :文件类型抽象类,用于给调用者自实现自己的文件类型
        • 其中的抽象函数 fillFileType 为文件甄别器,如果你实现了自己的文件类型,那么最好也要实现自己的文件甄别器
      • DefaultFileType :默认文件类型,文件类型类的默认实现,里面实现了默认的文件甄别器
    • filetype :一些默认实现的文件类型

      • 实现接口 IFileType 以实现自己的文件类型
    • utils :一些 工具

      • FileUtils 类包含了文件相关的大部分所需的函数
      • PercentLayoutUtilsPercentTextViewTextView 的相对布局实现(*1)

Log

<0.2.0>_2018-11-27

:recycle: :art: :rocket: :memo:

Add

  • 链式调用
  • 添加文件类型抽象类
    • 公开文件类型接口
  • 添加文件过滤抽象类
    • 公开文件过滤器接口
  • 公开条目点击接口,可以自实现条目点击效果
  • 添加界面字符串自定义功能
  • 返回键返回上层目录功能
  • 添加 FilePickerConfig 类保存配置
  • 新增四种主题配色

Update

  • 文件类型可由调用者自己实现,也可以使用默认实现
  • FileItemBean 添加图标资源变量,支持自定义类型图标
  • 调用 FilePickerManager.obtainData() 获取数据,Intent 仅作消息发送功能
  • 更新部分文件类型默认 icon
  • README

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

松本行弘的程序世界

松本行弘的程序世界

松本行弘 / 柳德燕、李黎明、夏倩、张文旭 / 人民邮电出版社 / 2011-8 / 75.00元

《松本行弘的程序世界》是探索程序设计思想和方法的经典之作。作者从全局的角度,利用大量的程序示例及图表,深刻阐述了Ruby编程语言的设计理念,并以独特的视角考察了与编程相关的各种技术。阅读《松本行弘的程序世界》不仅可以深入了解编程领域各个要素之间的关系,而且能够学到大师的思考方法。 《松本行弘的程序世界》面向各层次程序设计人员和编程爱好者,也可以供相关技术人员参考。一起来看看 《松本行弘的程序世界》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具