Android文件选择器

一款具有多种功能的文件选择器

介绍

GitHub地址:Fileselector

  1. 这是一个文件选择器
  2. 可以区分多种文件类型
  3. 支持多选和单选
  4. 可以选择指定类型文件
  5. 提供更多功能拓展

实例展示

Android文件选择器_第1张图片
顶部导航栏可点击
Android文件选择器_第2张图片
长按条目可选择
Android文件选择器_第3张图片
可自定义拓展功能
Android文件选择器_第4张图片

使用方法

基础使用

gradle:project 中

allprojects {
    repositories {
        google()
        maven { url 'https://www.jitpack.io' }
        jcenter()
    }
}

gradle:app 中

implementation 'com.github.zzy0516alex:FileSelectorRelease:v5.3'

Manifest中

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
        ...
        android:requestLegacyExternalStorage ="true">    
<application> 

依赖与权限设置完成后
在你的Activity中

FileSelectorSettings settings = new FileSelectorSettings();
                settings.setRootPath(FileSelectorSettings.getSystemRootPath()+"/Android")//起始路径
                        .setMaxFileSelect(2)//最大文件选择数
                        .setTitle("请选择文件夹")//标题
                        .setFileTypesToSelect(FileInfo.FileType.Folder)//可选择文件类型
                        .setMoreOPtions(new String[]{"新建文件夹", "删除文件"},
                                new BasicParams.OnOptionClick() {
                                    @Override
                                    public void onclick(Activity activity, int position, String currentPath, ArrayList<String> FilePathSelected) {
                                        File Folder =new File(currentPath,"新文件夹");
                                        if(!Folder.exists()){
                                            Folder.mkdir();
                                        }
                                    }
                                }, new BasicParams.OnOptionClick() {
                                    @Override
                                    public void onclick(Activity activity, int position, String currentPath, ArrayList<String> FilePathSelected) {
                                        if (FilePathSelected!=null){
                                            for (String path :
                                                    FilePathSelected) {
                                                File delFile=new File(path);
                                                delFile.delete();
                                            }
                                        }
                                    }
                                })//更多功能拓展
                        .show(MainActivity.this);//显示

获取返回的数据

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == FileSelectorSettings.REQUEST_CODE && resultCode == FileSelectorSettings.BACK_WITH_SELECTIONS){
            assert data != null;
            Bundle bundle=data.getExtras();
            assert bundle != null;
            ArrayList<String> FilePathSelected
                    =bundle.getStringArrayList(FileSelectorSettings.FILE_PATH_LIST_REQUEST);
            for (String file_path :
                    FilePathSelected) {
                Log.v("file_sel", file_path);
            }
        }
    }

自定义文件显示和图标

FileSelectorSettings settings = new FileSelectorSettings();
            settings.setRootPath(FileSelectorSettings.getSystemRootPath())
                    .setMaxFileSelect(2)
                    .setTitle("请选择文件夹")
                    .setFileTypesToSelect(FileInfo.FileType.Unknown)//选择自定义后缀的文件此处参数需为Unknown
                    .setFileTypesToShow(".cer")//自定义可见的文件后缀
                    .setCustomizedIcons(new String[]{".cer"},context,R.mipmap.file_cert)//自定义文件图标
                    .show(MainActivity.this);

自定义图标及字体

FileSelectorTheme theme = new FileSelectorTheme();
        theme.setTopToolBarTitleColor("#03DAC5")
                .setThemeColor("#FFFFFF")
                .setTopToolBarTitleSize(28)
                .setTopToolBarBackIcon(R.mipmap.back_black)
                .setTopToolBarMenuIcon(R.mipmap.options)
                .setNaviBarArrowIcon(R.mipmap.segment)
                .setNaviBarTextSize(20)
                .setFileInfoColor(getColor(R.color.black))
                .setFileNameSize(25);
FileSelectorSettings settings = new FileSelectorSettings();
            settings.setTheme(theme)
                    .show(MainActivity.this);

类与方法

FileSelectorTheme

下面图片中给出了UI的属性作用位置的序号:

Android文件选择器_第5张图片

属性 入参类型 注释 对应UI位置
themeColor Color-int/Color-String 主题色,顶栏及状态栏 1
topToolBarBackIcon Resource ID 顶部返回按钮 2
topToolBarTitleColor Color-int/Color-String 顶部标题及提示文本颜色 3
topToolBarTitleSize sp 顶部标题及提示文本大小 3
topToolBarMenuIcon Resource ID 顶部菜单按钮 4
naviBarTextColor Color-int/Color-String 导航栏字体颜色 5
naviBarTextSize sp 导航栏文本大小 5
naviBarArrowIcon Resource ID 导航栏分隔箭头 6
fileNameColor Color-int/Color-String 文件(夹)名称字体颜色 7
fileNameSize sp 文件(夹)名称字体大小 7
fileInfoColor Color-int/Color-String 文件信息提示字体颜色 8
fileInfoSize sp 文件信息提示字体大小 8

表中每个属性均有set方法,并有默认的属性,故该设置不是必须的设置。

FileSelectorSettings

方法 注释 错误
FileSelectorSettings setRootPath(String path) 设置起始目录 “初始路径不是一个目录或无权限”
FileSelectorSettings setMaxFileSelect(int num) 设置最大文件选择数
FileSelectorSettings setTitle(String title) 设置标题
FileSelectorSettings setTheme(FileSelectorTheme theme) 设置界面主题(大部分图标及字体)
FileSelectorSettings setFileTypesToSelect(FileInfo.FileType … fileTypes) 设置可选择的文件类型 “文件类型不能包含parent”
FileSelectorSettings setFileTypesToShow(String … extensions) 设置可见的文件类型 后缀示例".txt",不填写则全部显示
FileSelectorSettings setCustomizedIcons(String[] extensions, Context context, int … icon_ids) 设置自定义文件图标 后缀名和图标资源id应一一对应
FileSelectorSettings setMoreOPtions(String[] optionsName, BasicParams.OnOptionClick…onOptionClicks) 设置更多选项,第一个参数为选项名,第二个参数为选项点击事件 选项名和点击响应数量必须对应
static String getSystemRootPath() 获取系统外部存储根目录:/storage/emulated/0

FileInfo.FileType

变量 解释
Folder 文件夹
Video 视频文件
Image 图片文件
Audio 音频文件
Text 文本文件
Unknown 除上述类型以外的其他文件类型
Parent 不可用的变量

BasicParams.OnOptionClick

接口抽象方法:onclick

void onclick(Activity activity,int position,String currentPath,ArrayList<String> FilePathSelected);
参数 解释
activity 文件选择器的activity
position 当前点击的位置
currentPath 当前所在的目录
FilePathSelected 当前用户选择的文件列表

你可能感兴趣的:(笔记,android,java,ui,安卓)