ZFileManager 诞生于之前项目的各种SX需求,需求改了N遍后忍无可忍,直接一股脑重写再封装!最后再此基础上修改选择开源。完整代码查看GitHub ,有帮助记得start一下哦!!!

ZFileManager 特点

  • 默认支持 音频,视频,图片,txt,zip,word,excel,ppt,pdf 9种文件
  • 支持音频、视频播放,图片查看,zip解压,文件重命名、复制、移动、删除、查看详情
  • 支持查看指定文件类型,支持文件类型拓展,支持嵌套在Fragment中使用
  • 支持多选,数量、文件大小限制、实时排序、指定文件路径访问
  • 支持QQ、微信文件选择 && 支持自定义获取QQ、微信文件
  • 不含任何三方框架,极高的定制化,支持Android 10/11/12/++、AndroidX、DSL

部分截图

使用(Java使用)

温馨提示: targetSdkVersion >= 29 清单文件中加上 android:requestLegacyExternalStorage=“true”

Step 0. 添加依赖

最新版本

 // Android 10 及以下版本使用(不再推荐使用)implementation 'com.github.zp:z_file:1.2.6'

Step 1. 实现ZFileImageListener,并在调用前或Application中初始化


class MyFileImageListener : ZFileImageListener() {override fun loadImage(imageView: ImageView, file: File) {// 以Glide为例Glide.with(imageView.context).load(file).apply(RequestOptions().apply {placeholder(R.drawable.ic_zfile_other)error(R.drawable.ic_zfile_other)}).into(imageView)}
}// 在调用前初始化
getZFileHelp().init(MyFileImageListener())

Step 2. 在Activity或Fragment中使用


class MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)main_defaultMangerBtn.setOnClickListener {zfile { result {setFileListData(this)}}}}private fun setFileListData(fileList: MutableList<ZFileBean>?) {val sb = StringBuilder()fileList?.forEach {sb.append(it).append("\n\n")}main_resultTxt.text = sb.toString()}}

高级用法


文件类型拓展

Step 1. 新建一个类:ZFileType,重写里面的openFile()、loadingFile()方法


// 自定义的类型
const val APK = "apk"/*** 自定义Apk文件类型*/
class ApkType : ZFileType() {/*** 打开文件* @param filePath  文件路径* @param view      当前视图*/override fun openFile(filePath: String, view: View) {Toast.makeText(view.context, "打开自定义拓展文件", Toast.LENGTH_SHORT).show()}/*** 加载文件* @param filePath 文件路径* @param pic      文件展示的图片*/override fun loadingFile(filePath: String, pic: ImageView) {pic.setImageResource(R.mipmap.ic_launcher_round)}}

Step 2. 新建一个类:ZFileTypeListener,重写里面的getFileType()方法 (有多个自定义类型,公用即可)


class MyFileTypeListener : ZFileTypeListener() {override fun getFileType(filePath: String) =when (ZFileHelp.getFileTypeBySuffix(filePath)) {APK -> ApkType()else -> super.getFileType(filePath)}
}

Step 3. 在调用前或Application中配置

getZFileHelp().setFileTypeListener(MyFileTypeListener())

QQ或微信文件选择

super_qqTxt.setOnClickListener {// 打开QQ文件选择zfile {config {ZFileConfiguration().apply {filePath = ZFileConfiguration.QQ}}result {setResult(this)}}}super_wechatTxt.setOnClickListener {// 打开微信文件选择zfile {config {ZFileConfiguration().apply {filePath = ZFileConfiguration.WECHAT}}result {setResult(this)}}}private fun setResult(selectList: MutableList<ZFileBean>?) {val sb = StringBuilder()selectList?.forEach {sb.append(it).append("\n\n")}super_resultTxt.text = sb.toString()        }
详细文档请 点击这里

一切都源自之前的项目,从简单的一个文件选取列表 到 需要预览文件,再到QQ微信文件选择,每一次的需求变更都意味着又TM要重写了。干脆全部推倒重来,于是乎该库就诞生了,干就完事了…

Android 文件选择/文件管理相关推荐

  1. android 文件选择对话框,Android:打开选择音频的对话框

    我需要允许用户从他的媒体库中选择一些音频文件. 这是我正在尝试做的事情: Intent tmpIntent = new Intent( Intent.ACTION_PICK, android.prov ...

  2. Android调用系统自带的文件管理器进行文件选择

    这几天在做的项目网盘.上传时需要用到调用系统自带的文件管理器来选择文件,后来就在考虑怎么调用,网上也搜了很久,没有很好的解决方法,后来在一瞬间发现了一篇不错的文章,借鉴了一下代码. [java] vi ...

  3. uni-app 文件选择、文件管理器(ios11)

    插件市场:uni-app 文件选择.文件管理器(ios11) https://ext.dcloud.net.cn/plugin?id=3298

  4. android APP读写execl文件,文件管理器查看excel文件

    我想在我的APP里面读写excel文档,然后在手机的文件管理里面查看这个excel文档.我找了一个例子,在app里面写了一个excel文档. 问题一.我在想文档存放在哪里呢?看下面的代码吧. prin ...

  5. Qt Android 调用系统文件管理

    1.了解 使用JNI扩展Qt应用 参考<Qt on Android核心编程>15章 源码https://download.csdn.net/download/dinosaurx/10149 ...

  6. android 调用系统文件管理器

    今天,简单讲讲android如何调用系统的文件管理器获取目录下的文件资源. 这几天,还是因为搬家的事,导致自己状态很差.和领导说想要辞职,领导说还是先适应一下在说.所以还是坚持了. 这个其实也很简单, ...

  7. android double比较大小吗,Android双向选择控件DoubleSeekBar使用详解

    本文实例为大家分享了Android双向选择控件DoubleSeekBar的使用方法,供大家参考,具体内容如下 先看效果图 1.DoubleSlideSeekBar public class Doubl ...

  8. 【转】Android - 文件读写操作 总结

    Android - 文件读写操作 总结 原文出处:http://blog.csdn.net/ztp800201/article/details/7322110 在android中的文件放在不同位置,它 ...

  9. Android系统(74)--- 从零实现灵活且可高度定制的Android图片选择架构

    从零实现灵活且可高度定制的Android图片选择架构 https://www.jianshu.com/u/df76f81fe3ff 前言 这是我花费了数月闲暇时间从零开始写的一个库,在这期间,我学习到 ...

  10. android 数据文件存储,实例详解Android文件存储数据方式

    总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络.下面通过本文给大家介绍android文件存储数据方式. 1.文件存储数据使用了java中的io操作来进行文件的保存和读取,只不 ...

最新文章

  1. 【转】Apache配置中ProxyPassReverse指令的含义
  2. php针对中文的字符串函数,php截取中文字符串函数实例_php技巧
  3. 大工计算机应用基础在线测试2,大工15秋《计算机应用基础》在线测试2
  4. 品质管控计划ppt怎样写_品质管理需要做好几件事
  5. Zookeeper的一次迁移故障
  6. Qt5使用windeployqt后 exe文件还是无法执行 无法定位程序输入点 _ZdaPvj 于动态链接库 libstdc++-6.dll
  7. 《C专家编程》一1.6 它很棒,但它符合标准吗
  8. 学籍管理系统系统流程图
  9. sqlite 复合唯一索引_SQLite 索引(Index)
  10. java并发编程实践-this溢出2
  11. JAVA 疯狂讲义 学习笔记
  12. Java 如何判定当前时间是否在某个范围
  13. 苹果付费app共享公众号_公众号+搭建知识付费网课分销平台聚合型玩法解析
  14. 【PowerDesigner】【5】数据模型 CDM
  15. 迅为-4418开发板-驱动-PWM输出实验
  16. BLM业务模式设计之战略控制
  17. calc桌面计算机,Calc1(桌面计算器)
  18. 爬了 48048 条评论,解读 9.3 分的「毒液」是否值得一看?
  19. 相位延时、相位延迟、群延时
  20. HIR夏季挑战赛作品紧急优化

热门文章

  1. EasyDarwin开源云平台接入海康威视EasyCamera摄像机之快照获取与上传
  2. 使用 busybox 为 龙芯2f 创建 文件系统
  3. Python 信号处理——短时傅里叶变换(STFT)
  4. 高数_第1章空间解析几何与向量代数__直线方程
  5. 数据库 关于权限管理系统的三种设计方法
  6. Diy Win7 OEMlogo
  7. iOS包重签名工具,ipa文件重签名,快速签名,SignTool签名工具,好用的签名工具,App重签名
  8. 详细介绍SWFUpload
  9. css漂亮的侧导航栏,jQuery+css实现非常漂亮的水平导航菜单效果
  10. 实时错误‘429’:ActiveX控件不能创建对象