android文件管理器导航栏

一直对手机的文件管理器顶部的滑动导航栏(如下图红框)很感兴趣,但是网上这一块却没有这样的效果,可能是简单,没人愿意写吧,今天动手做了下。
这里写图片描述
当进入某一目录时导航栏会自动移动并显示这一目录,点击导航栏某一目录后那么这一目录之后的目录会去掉,这一目录成为了当前目录,并且下面的文件也显示的是当前目录里的文件。
1、本次打算上面的导航用横向的RecycleView实现,当进入目录时就把此目录的路径转化为String数组作为RecycleView的数据源;
2、当点击目录导航栏中某一目录时就把这一目录之后的String从数组中去掉,然后更新下数据即可,去掉几个数组就回退几次,从而下面的显示的当前目录的子目录也会同时更新
下面是效果图
这里写图片描述

难点在于:1、手机设备管理器中的当前目录(也就是导航栏的最后一个)总是可见的,这就需要RecycleView自动滑动到最后一个position,这可以通过RecycleView的smoothScrollToPosition方法来实现。但是当我当我点击“preload”目录时,需要将后面的目录隐藏掉,于是循环remove掉ArrayList中后面的数据,删除后显示的却不是最后一项,而是顺序显示的,也就是并没有实现滑动,搜了下资料,通过RecyclerView.Adapter的notifyDataSetChanged()方法刷新一下,再去滑动就可以了。
2、由于需要上面的导航栏与下面的子目录保持一致,当我点击某一项后,在删除后面目录的同时也需要刷新下面的子目录,这可通过入栈出栈来解决,进入了一个新目录则就执行入栈,删除了几个目录就执行几次出站即可。

貌似语言表达很有问题,看代码应该清楚些: https://github.com/dijiubuzhan/FileManage.git

猜你喜欢

转载自blog.csdn.net/u013795543/article/details/70922820