android自定义控件之文件选择

android自定义控件之文件选择,第1张

不多说,先上图:

列举当前目录下的所有文件,如果是选择目录,则不显示文件,如果是选择文件,则需要显示文件。

新建目录,就是在当前路径下新建目录,同时新建后的目录要能够及时显示在文件列表中。

需要读写权限,添加第三方权限请求库:

使用:

DialogFragment与Dialog有一些不同的地方,其中show方法需要传入FragmentManager

另外需在onCreateVie方法初始化布局,以及获取到控件

另外就是RecycleView,之所以采用RecycleView,是因为发现如果用ListView,内存会不断增加,很难降下来。

其中CommonAdapter继承自BaseAdapter,是通用的Adapter,兼容ListView:

这一部分逻辑有FileProvider类完成这里需要注意的是,有些手机不支持读取根目录,所以改为读取"/mnt/"作为根目录就行读取。

另外跳转目录都是改变当前路径,然后再刷新数据。

同时在其内部定义了FileData类:

文件选择,可以通过当前路径路径以及列表索引来唯一确定路径;都是,当跳转目录后,索引应该重置。

这里采用WeakReference记录选择的控件,但选择其他目录或者文件时,之前的控件需要重置一下状态。

https://github.com/xiaoyifan6/videocreator

该源码主要用于图片合成gif或者视频,其中文件选择d窗是自己写的。感觉这个d出应该有许多地方可以用到,所以写下这篇文章,方便以后参考查看。

一直以来对于系统选择资源文件的流程都模糊不清,每次定义资源的时候都战战兢兢,终于忍无可忍,无需再忍,决定掏出官方文档来仔细瞧一瞧。摘要记录,以防忘记。

官方文档

一个简单的项目目录如下所示:

其中资源文件放置在res目录下,res支持的资源目录和类型如下:

对于一个资源文件,针对设备的不同,需要提供一整套的资源文件供程序运行时根据设备和运行条件(横屏或者竖屏、移动还是联通)的不同来选择合适的资源文件。

资源文件必须名称相同地放置到合适的资源文件夹下面,而 资源文件夹的命名至关重要 。资源文件夹必须严格按照“资源类型名称-配置1-配置2-...”的方式进行命名,如图2中,drawable是资源类型,hdpi是一个分辨率的配置。在drawable-hdpi和drawble文件夹中分别放置相同名称的高分辨率和默认配置的2个资源文件。

设备在运行时选择资源的标准就是按照资源文件夹的命名来匹配选择最优的资源文件。 设备按如下表的配置顺序依次匹配来选择最佳的资源(注意: 下表的配置仅为主要配置,不是全部。 ):

对于资源文件夹的命名必须按照上表中的顺序依次配置,切不可倒置。

android系统按照如图3所示进行资源的匹配选择。

例如app有以下资源文件夹:

drawable/

drawable-en/

drawable-fr-rCA/

drawable-en-port/

drawable-en-notouch-12key/

drawable-port-ldpi/

drawable-port-notouch-12key/

系统配置:

运营商 = mcc400-mnc00

语言区域 = en-rGB

屏幕方向 = port

屏幕密度 = hdpi

触屏类型 = nottouch

开始选择:

请确保 每种配置都有一个默认的资源可以进行选择 ,这样在出现设备没有任何匹配文件夹的情况下可以选择默认的文件夹中的资源而不至于导致系统崩溃。例如,如果我们只配置2种文件夹values-en,values-zh,那么在设备语言为法语(fr)的情况下,按照先移除冲突的资源文件夹的准则,这2个资源文件夹都被移除了已经没有其他可以选择的资源文件了,系统会崩溃, 所有任何资源文件夹都请保留一个默认名称的资源文件夹

有时候有些资源希望在不同的配置下可以服用,例如一个很大的背景图片希望在语言为中文(zh)和英文(en)的情况下都使用,这时候如果在drawable-zh和drawable-en的文件夹下面都放置一种图片当然是可以的,只是这样会造成apk的体积过大。这时候可以将此图拷贝到drawable/文件夹下命名为icon_zh_en,而在

drawable-en和drawable-zh文件夹下分别保存下面的icon.xml文件,那么同样载en和zh的配置下也可以通过引用R.drawable.icon引用到图片,从而对apk瘦身。同样对于资源文件、数组、布局文件都可以使用别名来引用以达到避免资源重复的问题。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7918742.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存