Coder Social home page Coder Social logo

fileselector's Introduction

FileSelector 文件选择器

* 什么是文件选择器?

简单来说就是运行于 Android 手机上的一个第三方库,它提供手机外部存储中的文件、目录的检索、选择功能,提供便捷可视化的界面给用户选择文件。

* 这个代码库有什么优势呢?

确实,其功能对于修养多年的大神来说太简单了。其核心代码就是一个 RecyclerView 和一个 Adapter,已扩展存储中的文件作为数据。但是我提供了高度可定制化 UI 效果的功能,好戏后面见。

* 使用简单。需要引入 DFileSelector 代码库。没有上传到 maven 等依赖库。

* 此代码库需要读取扩展存储的权限

* 本例是使用模拟器运行的效果,更好的效果请使用真机运行查看

先来看效果

* 单选模式

* 多选模式

偷个懒,给你指个路 ->
--> 使用示例代码1

--> 使用示例代码1

--> 使用示例代码1

怎么更好的定制UI和功能呢?

可以设置文件选中后的回调
可以定制每一个 item 的UI效果,参考 setItemParameter() 方法
可以设置单选模式和多选模式
可以定制文件的 icon 类型
可以定制列表数据排序方式
可以定制文件过滤规则
可以定制任意一处的文字颜色、字体大小、图片等细节

等等

具体细节可以参考下面的代码简报

FileSelector.with(fileSelectorLayout)
.listen(onFileSelectListener)
.setItemParameter(ItemParameter.with(fileSelectorLayout.getContext())
.setTitleTextSize(R.dimen.sp_20)
// .setTitleTextColor(Color.RED)
// .setTitleTextBold(true)
// .setImageWidth(R.dimen.dp_50)
// .setImageHeight(R.dimen.dp_50)
// .setImageMarginRight(R.dimen.dp_50)
// .setCountTextColor(Color.RED)
// .setCountTextSize(R.dimen.sp_20)
// .setCountTextBold(true)
// .setDateTextSize(R.dimen.sp_20)
// .setDateTextColor(Color.RED)
// .setDateTextBold(true)
// .setLayoutBackgroundColor(Color.RED)
// .setLayoutPadding(R.dimen.dp_1, R.dimen.dp_1, R.dimen.dp_1, R.dimen.dp_1)
// .setSplitLineColor(Color.RED)
// .setSplitLineHeight(R.dimen.dp_10)
// .setSplitLineWidth(R.dimen.dp_10)
// .setSplitLineMarginLeft(R.dimen.dp_50)
// .setSplitLineMarginRight(R.dimen.dp_50)
)
.setMultiSelectionModel(true)
// .setMultiModelMaxSize(3)
// .setMultiModelToast(true, "最多只能选择3个文件")
// .setFileSizeProvide(FileSizeProvide fileSizeProvide)
// .setFileIconProvide(FileIconProvide fileIconProvide)
// .setFileDateProvide(FileDateProvide fileDateProvide)
// .setFileFilter(FileFilter fileFilter)
// .setFileOrderProvide(FileOrderProvide fileOrderProvide)
// .setHeadTopLineVisibility(View.VISIBLE)
// .setHeadTopLineColor(Color.RED)
// .setHeadTopLineHeight(R.dimen.dp_30)
// .setHeadTopLineHeightDP(30)
// .setHeadTopLineHeightPX(30)
// .setHeadTopLineMargin(R.dimen.dp_10, R.dimen.dp_10,R.dimen.dp_10,R.dimen.dp_10)
// .setHeadTopLineMarginDP(10,10,10,10)
// .setHeadTopLineMarginPX(10,10,10,10)
// .setHeadBottomLineVisibility(View.VISIBLE)
// .setHeadBottomLineColor(@ColorInt int color)
// .setHeadBottomLineHeight(@DimenRes int resId)
// .setHeadBottomLineHeightDP(float dpHeight)
// .setHeadBottomLineHeightPX(float pxHeight)
// .setHeadBottomLineMargin(@DimenRes int leftDimenRes, @DimenRes int topDimenRes, @DimenRes int rightDimenRes, @DimenRes int bottomDimenRes)
// .setHeadBottomLineMarginDP(float leftDP, float topDP, float rightDP, float bottomDP)
// .setHeadBottomLineMarginPX(float leftPX, float topPX, float rightPX, float bottomPX)
// .setHeadRootHeight(R.dimen.dp_40)
// .setHeadRootHeightDP(40)
// .setHeadRootHeightPX(120)
// .setHeadRootPadding(R.dimen.dp_20,R.dimen.dp_1,R.dimen.dp_30,R.dimen.dp_1)
// .setHeadRootPaddingDP(float leftDP, float topDP, float rightDP, float bottomDP)
// .setHeadRootPaddingPX(float leftPX, float topPX, float rightPX, float bottomPX)
// .setHeadRootBackgroundColor(Color.RED)
// .setHeadRootBackgroundResource(@DrawableRes int resId)
// .setHeadLeftTextSize(R.dimen.sp_20)
// .setHeadLeftTextSizePX(60)
// .setHeadLeftTextSizeSP(20)
// .setHeadLeftTextColor(Color.RED)
// .setHeadLeftTextColor(ColorStateList colors)
// .setHeadLeftTextBold(true)
// .setHeadLeftTextEllipsize(TextUtils.TruncateAt.MARQUEE)
// .setHeadRightImage(Drawable leftDrawable)
// .setHeadRightImageDP(Drawable leftDrawable, float widthDP, float heightDP)
// .setHeadRightImagePX(Drawable leftDrawable, float widthPX, float heightPX)
// .setHeadRightText(@StringRes int resId)
// .setHeadRightText("上一级")
// .setHeadRightTextSize(@DimenRes int resId)
// .setHeadRightTextSizePX(float px)
// .setHeadRightTextSizeSP(20)
// .setHeadRightTextColor(Color.RED)
// .setHeadRightTextColor(ColorStateList colors)
// .setHeadRightTextBold(true)
// .setHeadRightTextBackgroundColor(Color.RED)
// .setHeadRightTextBackgroundResource(@DrawableRes int resId)
// .setRecyclerViewLineDecoration(RecyclerView.ItemDecoration itemDecoration)
// .setRecyclerViewLineColorHeight(Color.RED, R.dimen.dp_1, R.dimen.dp_5)
// .setRecyclerViewLineColorHeightDP(@ColorInt int color, float heightDP, float marginDP)
// .setRecyclerViewLineColorHeightPX(@ColorInt int color, float heightPX, float marginPX)
// .setRecyclerViewBackgroundColor(Color.GRAY)
// .setRecyclerViewBackgroundResource(@DrawableRes int resId)
// .setEmptyText(@StringRes int resId)
// .setEmptyText("无数据")
// .setEmptyTextColor(Color.RED)
// .setEmptyTextColor(ColorStateList colors)
// .setEmptyTextSize(@DimenRes int resId)
// .setEmptyTextSizePX(float px)
// .setEmptyTextSizeSP(float sp)
// .setEmptyTopImage(@DrawableRes int topDrawableResId)
// .setEmptyTopImage(Drawable topDrawable)
// .setEmptyTopImage(@DrawableRes int topDrawableResId, @DimenRes int widthResId, @DimenRes int heightResId)
// .setEmptyTopImageDP(Drawable topDrawable, float widthDP, float heightDP)
// .setEmptyTopImagePX(Drawable topDrawable, float widthPX, float heightPX)
// .setSubmitTextViewHeight(@DimenRes int resId)
// .setSubmitTextViewHeightDP(float dpHeight)
// .setSubmitTextViewHeightPX(float pxHeight)
// .setSubmitText(@StringRes int resId)
// .setSubmitText("ok")
// .setSubmitTextColor(@ColorInt int color)
// .setSubmitTextColor(ColorStateList colors)
// .setSubmitTextSize(@DimenRes int resId)
// .setSubmitTextSizePX(float px)
// .setSubmitTextSizeSP(float sp)
// .setSubmitTextBold(boolean isBold)
// .setSubmitViewBackgroundColor(Color.RED)
// .setSubmitViewBackgroundResource(@DrawableRes int resId)
// 添加设置默认路径方法
// .setDefaultFile(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS))
.setup();

fileselector's People

Contributors

mengzhinan avatar

Stargazers

 avatar Netsnake avatar  avatar  avatar  avatar knightleeo avatar  avatar  avatar  avatar jim king avatar 沙漠游魂 avatar  avatar Allen Iverson avatar  avatar Carl Blaine avatar 一叶知秋 avatar  avatar Reborn avatar 陶海理 avatar MaNing avatar  avatar  avatar Luosp avatar Sirm avatar  avatar  avatar lee avatar Cookie avatar  avatar mahongyin avatar 仕明同学 avatar clodthunder avatar  avatar MoeShin avatar  avatar laizx avatar Yange avatar  avatar licq777 avatar lxy avatar  avatar  avatar

Watchers

James Cloos avatar NTSK13 avatar  avatar

fileselector's Issues

android x适配

android x适配的话,是需要自己替换原来的控件为 androix里面的控件嘛

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.