- 浏览: 262765 次
- 性别:
- 来自: 济南
文章分类
最新评论
转载请注明出处:http://blog.csdn.net/qinjuning
今天给大家分享下文件选择器的作用 , 具体就是获取用户在在SD卡选中的文件/文件夹路径 ,类似于C#中
OpenFileDialog控件(对C#的一站式开发还是念念不忘)。功能实现起来比较简单,主要是帮助大家节省开发时间。
网上流传较广的一个成品如下 <[Android实例]文件选择器>, 本文也是根据上面的成品修改而成,使其更易
理解,效率更高。除此之外,主要特色有:
1、我们监听了用户按下Back键的事件,使其返回上一层目录;
2、针对不同的文件类型(文件vs文件夹 , 目标文件vs其他文件)做了特殊处理。
知识点一、 File 类的使用
文件选择器的主要功能是:浏览文件\文件夹、文件类型等;都是通过Java File类来实现的。
关于File类的使用,请参考如下博客:
<<来自java文档 File类>>
<<JavaFile类>>
知识点二、调用方法说明
使用了startActivityForResult()发起调用以及onActivityResult()方法接受回调后的信息。
截图如下:
其他的也没什么好说了,大家看看代码注释吧~~ so easy - - 。
FileChooserActivity.java 实现文件选择的类 。
public class CopyOfFileChooserActivity extends Activity { private String mSdcardRootPath ; //sdcard 根路径 private String mLastFilePath ; //当前显示的路径 private ArrayList<FileInfo> mFileLists ; private FileChooserAdapter mAdatper ; //配置适配器 private void setGridViewAdapter(String filePath) { updateFileItems(filePath); mAdatper = new FileChooserAdapter(this , mFileLists); mGridView.setAdapter(mAdatper); } //根据路径更新数据,并且通知Adatper数据改变 private void updateFileItems(String filePath) { mLastFilePath = filePath ; mTvPath.setText(mLastFilePath); if(mFileLists == null) mFileLists = new ArrayList<FileInfo>() ; if(!mFileLists.isEmpty()) mFileLists.clear() ; File[] files = folderScan(filePath); if(files == null) return ; for (int i = 0; i < files.length; i++) { if(files[i].isHidden()) // 不显示隐藏文件 continue ; String fileAbsolutePath = files[i].getAbsolutePath() ; String fileName = files[i].getName(); boolean isDirectory = false ; if (files[i].isDirectory()){ isDirectory = true ; } FileInfo fileInfo = new FileInfo(fileAbsolutePath , fileName , isDirectory) ; //添加至列表 mFileLists.add(fileInfo); } //When first enter , the object of mAdatper don't initialized if(mAdatper != null) mAdatper.notifyDataSetChanged(); //重新刷新 } //获得当前路径的所有文件 private File[] folderScan(String path) { File file = new File(path); File[] files = file.listFiles(); return files; } private AdapterView.OnItemClickListener mItemClickListener = new OnItemClickListener() { public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { FileInfo fileInfo = (FileInfo)(((FileChooserAdapter)adapterView.getAdapter()).getItem(position)); if(fileInfo.isDirectory()) //点击项为文件夹, 显示该文件夹下所有文件 updateFileItems(fileInfo.getFilePath()) ; else if(fileInfo.isPPTFile()){ //是ppt文件 , 则将该路径通知给调用者 Intent intent = new Intent(); intent.putExtra(EXTRA_FILE_CHOOSER, fileInfo.getFilePath()); setResult(RESULT_OK , intent); finish(); } else { //其他文件..... toast(getText(R.string.open_file_error_format)); } } }; public boolean onKeyDown(int keyCode , KeyEvent event){ if(event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_BACK){ backProcess(); return true ; } return super.onKeyDown(keyCode, event); } //返回上一层目录的操作 public void backProcess(){ //判断当前路径是不是sdcard路径 , 如果不是,则返回到上一层。 if (!mLastFilePath.equals(mSdcardRootPath)) { File thisFile = new File(mLastFilePath); String parentFilePath = thisFile.getParent(); updateFileItems(parentFilePath); } else { //是sdcard路径 ,直接结束 setResult(RESULT_CANCELED); finish(); } } }
界面依旧很丑陋,囧 ,大家可以根据需要在此基础上添加功能 。 示例代码下载地址:
http://download.csdn.net/detail/qinjuning/4908609 (源代码下载)
发表评论
-
unity基础开发----物体位移和旋转实用代码
2013-11-21 22:46 1219using UnityEngine; using Syst ... -
android 动态时钟 附源码
2013-09-24 12:03 1205自定义View实践 例子代码 自定义动态时钟 ... -
android Dialog 背景问题
2013-08-14 11:22 1171我们在使用自定义的Dialog的时候,喜欢自己 ... -
ScrollView scrollTo 的使用 动画效果
2013-08-05 17:43 4493今天用到了ScrollView scrollTo方法 ... -
Android中View绘制优化之一---- 优化布局层次
2012-09-04 23:00 962... -
Android中View绘制优化二一---- 使用<include />标签复用布局文件
2012-09-08 13:54 967... -
Android中View绘制优化之三---- 优化View
2012-09-13 21:00 1044... -
兰林任务管理应用程序雏形版以及概要说明
2012-09-15 21:54 822... -
Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(上)
2012-10-10 18:14 1058... -
Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(下)
2012-10-17 20:05 803... -
【编译原理】使用Lex将C/C++文件输出为HTML文件
2012-07-20 09:37 96508年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大 ... -
【编译原理】正则表达式
2012-07-21 21:49 212508年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大 ... -
【OpenCV】访问Mat图像中每个像素的值
2012-07-22 07:10 1087今天百度搜资料还搜到了自己的。。。《访问图像中每个像素的值 ... -
【编译原理】用Yacc做语法分析
2012-07-23 05:47 169108年9月入学,12年7月毕 ... -
【UML】UML几种图的绘制
2012-07-24 09:49 93508年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大 ... -
【OpenCV】邻域滤波:方框、高斯、中值、双边滤波
2012-07-26 10:52 1401邻域滤波(卷积) 邻域算子值利用给定像素 ... -
【数据结构】排序算法:希尔、归并、快速、堆排序
2012-07-28 06:15 93208年9月入学,12年7月毕 ... -
【OpenCV】角点检测:Harris角点及Shi-Tomasi角点检测
2012-07-31 13:25 1488角点 特征检测与匹配 ... -
【UML】案例分析:机场运作系统
2012-08-01 17:22 290408年9月入学,12年7月毕 ... -
【OpenCV】边缘检测:Sobel、拉普拉斯算子
2012-08-04 13:41 1463边缘 边缘(edge)是指图像局部强度变化最显著的部分。主要 ...
相关推荐
Android中文件选择器的实现
Android文件选择器,可以实现多选,单选文件。
这是一个android端文件选择器,使用PopupWindow实现,可以直接运行。
简单的实现了Android的文件选择,解决了使用原生文件选择器可能获取不到文件路径的问题。
android-doc-picker,一个简单易用的文档选择器android库。从设备中选择任何文档,如pdf、ppt、文本、word或媒体文件.zip
一个Android的简易文件选择器,可以实现多选,反选,全选的功能,解决了listview中checkbox的选中状态错乱问题
Unity 调用Android文件资源管理器,可以选择Android手机上的图片,视频等一些列文件,并且获得相关的文件路径。直接导入Unity即可运行。测试已经通过
C++调用JAVA函数实现安卓APP中调用图片选择器;能够适配不同的安卓版本,实现安卓6.0动态权限获取与设置
一个简单的android文件选择器的实现,参考了论坛的一个例子,自己做了一个工程例子,自己的项目中也是直接用这个
This is a light Android file picker library. Please star this library if you like it. :) Demo Usage 1.Import to your project compile 'com.vincent.filepicker:MultiTypeFilePicker:latestVersion' 2...
该库的核心思想是做到可扩展,但是你只是想选择sdcard中的文件,只需阅读关于如何使用sdcard文件选择器就可以了。 首选需要加上文件访问权限: <uses-permission android:name="android.permission.WRITE_EXTERNAL_...
该软件是一个文件管理器,它能帮助你更好的管理手机上的文件。 1.实现了对文件或文件夹的创建,重命名,删除,复制,移动等功能。 2.长按列表项弹出包含重命名,移动,复制,详细信息等列表项的对话框。 3.按Menu键显示...
看了一篇文章根据楼猪的代码写的,楼猪未提供代码,很多网友以为楼猪少上传东西了,经测试,只需要几张图片就行,故写了写,都能实现.提供代码仅供参考.
基本思路,先通过Android API调用系统自带的文件浏览器选取文件获得URI,然后将URI转换成file,从而得到file。
android系统并不自带文件管理器,但是很多情况下,我们有诸如从SD中打开文件的... 下面介绍在代码中实现资源管理器,只需要一百行左右的一个类即可以最常用的文件选择功能。本代码为简单的文件管理器的实现,可独立编译
android开发,eclipse工程文件,实现畅言开放平台评论功能,同步实现android中DatePick与仿iOS日期选择的功能
图片选择,如从系统图库中选择照片,或选择文件、音乐等等;Demo比较简单,大家可参考学习
1.适配安卓各种系统,支持android 11 2.图片过大不会引起 oom 3.动态获取系统权限, 4.支持相片 or 视频的单选和多选 5.支持裁剪比例设置,如常用的 1:1、3:4、3:2、16:9 默认为图片大小 6.支持视频预览 7.支持 gif...
文件管理器就是能够浏览和管理手机中的文件、文件夹和存储卡中数据的工具软件, 和 Windows 系统中的资源管理器很相似,可以用来查看本机的所有资源、文件系统结构, 以便更清楚、直观的查看和操作手机的文件和...