博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XC文件管理器-打造优美易用的文件管理器
阅读量:5877 次
发布时间:2019-06-19

本文共 5411 字,大约阅读时间需要 18 分钟。

技术:Android+java
 

概述

XC文件管理器,是基于Android6.0+开发的一个方便易用的文件管理器,具有文件的目录管理和文件的管理,主要包括文件的新建、删除、重命名、复制,移动剪切以及文件详情查看等文件和目录的功能,同时支持文件和目录的批量管理,应该功能较全,视图提供两种:网格视图以及列表视图,应用界面简洁美观,易用性强,是较好易用的一款Android文件管理应用。

详细

代码下载:

一、概述

XC文件管理器,是基于Android6.0开发的一个方便易用的文件管理器,具有文件的目录管理和文件的管理,主要包括文件的新建、删除、重命名、复制,移动剪切以及文件详情查看等文件和目录的功能,同时支持文件和目录的批量管理,应该功能较全,视图提供两种:网格视图以及列表视图,应用界面简洁美观,易用性强,是较好易用的一款Android文件管理应用。

二、应用效果图

01.png 02.png04.png 03.png

05.png 06.png

07.png 08.png

09.png 10.png

三、整体架构以及设计开发方案

1.整体页面框架采用Header+body+Footer三段式设计,核心首页页面以及Footer布局代码如下:

2.获取手机文件目录核心实现

/**  * 设置MainList的数据  */ public void setMainlistData(){  PhoneDir dir = new PhoneDir();  dir.setImageID(R.drawable.sdcard);  dir.setStrDirName("存储卡/SD卡目录");  String dAllSpace = CommonUtils.getSdCardAllSpace();  String dFreeSpace = CommonUtils.getSdCardFreeSpace();  String strOther = ""+dFreeSpace +"GB可用/"+dAllSpace+"GB总计";  dir.setStrDirOther(strOther);    mainlist.add(dir);  dir = new PhoneDir();  dir.setImageID(R.drawable.systemdir);  dir.setStrDirName("系统目录/手机目录");  dir.setStrDirOther("请谨慎操作系统目录文件");  mainlist.add(dir); }  /**  * 设置要显示的文件列表数据的数据  */  public void setFileListData(String strPath){  String strShowPath;  if(strCurPath.contains(CommonUtils.getSdCardRoot())){   strShowPath = strCurPath.replaceAll(CommonUtils.getSdCardRoot(), "我的手机》存储卡");  }else{   strShowPath = strCurPath.replaceAll(FileUtils.getPhoneRoot(), "我的手机》系统目录");  }  strShowPath =strShowPath.replaceAll("/", "》");  tvShowPath.setText(strShowPath);  ArrayList fileList =  FileUtils.getFilesOfCurDir(strPath);  FileItem item ;  File file ;  sdcardlist.clear();  sdcardGrid.clear();  for(int i = 0;i

3.实现列表和缩略图方格UI布局样式切换

该功能主要是基于ListView和GridView进行UI 和数据适配器的更新切换,核心代码如下

if(mViewTypeStatus == Constant.VIEW_LISTVIEW)     {//ListView切换到GridView            llSdcardList.setVisibility(View.GONE);      llSdcardGrid.setVisibility(View.VISIBLE);      sdcardListView.setVisibility(View.GONE);      sdcardGridView.setVisibility(View.VISIBLE);      ImageView iv = (ImageView)view.findViewById(R.id.ivItemImage);      iv.setImageResource(R.drawable.footer_menu_list);      mViewTypeStatus = Constant.VIEW_GRIDVIEW;      setFileListData(strCurPath);      refreshData();           }     else{//GridView切换到ListView            llSdcardList.setVisibility(View.VISIBLE);      llSdcardGrid.setVisibility(View.GONE);      sdcardGridView.setVisibility(View.GONE);      sdcardListView.setVisibility(View.VISIBLE);      ImageView iv = (ImageView)view.findViewById(R.id.ivItemImage);      iv.setImageResource(R.drawable.footer_menu_grid);      mViewTypeStatus = Constant.VIEW_LISTVIEW;      setFileListData(strCurPath);      refreshData();     }     break;/**  * 刷新当前页面(ListView或者GridView)数据  */ public void refreshData(){  if(mViewTypeStatus == Constant.VIEW_LISTVIEW){   sdcardListAdapter = new SdcardListAdapter(MainActivity.this, sdcardlist);   sdcardListView.setAdapter(sdcardListAdapter);  }else {   sdcardGridAdapter = new SdcardGridAdapter(MainActivity.this, sdcardGrid);   sdcardGridView.setAdapter(sdcardGridAdapter);  }  if(sdcardlist.size() <= 0 ){   ToastUtils.ToastAtCenterPosition(MainActivity.this, "目录为空,没有任何文件!");  }     }

4.添加文件搜索功能

搜索功能是搜索文件目录下的所有符合搜索关键字的文件或者目录,相关初始化和核心实现代码如下:

/**  * 初始化 搜索框视图 即rlSearchView视图  */ public void initSearchView(){  //初始化搜索框视图  rlSearchView = (RelativeLayout)findViewById(R.id.rlSearchView);  rlSearchView.setVisibility(View.GONE);  final EditText editText = (EditText)rlSearchView.findViewById(R.id.etSearchTextView);  editText.addTextChangedListener(new TextWatcher() {      @Override   public void onTextChanged(CharSequence s, int start, int before, int count) {    // TODO Auto-generated method stub    String condition = editText.getText().toString();    if (condition.equals("")) {     setFileListData(strCurPath);     refreshData();    }else{     searchFilesList.clear();     searchSdCardFiles(new File(strCurPath));     setSearchListData(condition);     refreshData();    }   }      @Override   public void beforeTextChanged(CharSequence s, int start, int count,     int after) {    // TODO Auto-generated method stub       }      @Override   public void afterTextChanged(Editable s) {    // TODO Auto-generated method stub       }  });  ImageView ivCancelSearch = (ImageView)rlSearchView.findViewById(R.id.ivCancelSearch);  ivCancelSearch.setOnClickListener(new OnClickListener() {      @Override   public void onClick(View v) {    // TODO Auto-generated method stub    rlSearchView.setVisibility(View.GONE);   }  }); }/**  * 遍历SD卡  */ public void searchSdCardFiles(File root){  File files[] = root.listFiles();                  if(files != null)          for(File f:files){                        if(f.isDirectory()){             searchFilesList.add(f);             searchSdCardFiles(f);              }              else{               searchFilesList.add(f);              }          } } /**  * 设置要显示的搜索出来的文件列表数据的数据  */ public void  setSearchListData(String condition){  String strShowPath =  "搜索结果:";  tvShowPath.setText(strShowPath);  FileItem item ;  File file ;  sdcardlist.clear();  for(int i = 0;i

5.由于本项目代码量比较多,在此就不把其他所有功能都一一罗列了,其他的常规的复制,剪切,新建文件等功能,以及版权和检查更新弹窗功能实现,请大家下载源码具体,谢谢大家,希望对大家有所帮助。

四、项目代码目录结构

 

00.jpg

代码下载:

注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权

转载于:https://www.cnblogs.com/demodashi/p/10503350.html

你可能感兴趣的文章
一个简单的运算表达式解释器例子
查看>>
ORACLE---Unit04: SQL(高级查询)
查看>>
Entity Framework Code First 模式-建立多对多联系
查看>>
[LeetCode] Reverse Lists
查看>>
前台页面之<base>标签
查看>>
angular分页插件tm.pagination 解决触发二次请求的问题
查看>>
day08-文件操作
查看>>
教学-45 对象的相等
查看>>
贪食蛇
查看>>
关于Spring 中的事务
查看>>
为什么现在都用面向对象开发,为什么现在都用分层开发结构?
查看>>
【离散数学】 SDUT OJ 偏序关系
查看>>
写给学弟学妹的产品入门建议(持续更新)
查看>>
view视图总结
查看>>
深入剖析tomcat之一个简单的web服务器
查看>>
记一次数据库查询语句的优化
查看>>
poj2365
查看>>
SQL学习笔记三select语句的各种形式
查看>>
Android cts all pass 全攻略
查看>>
数学 SCU 4436 Easy Math
查看>>