Android文件管理器
来源:互联网 发布:oracledriver源码 编辑:程序博客网 时间:2024/06/11 22:42
文件管理器时所遇到的问题
1.如何点击列表项进入相应的子菜单
答:自定义MyAdapter继承自BaseAdapter,获取目录下的所有文件存入ArrayList中,然后依次为布局中的textView赋值,这样点击列表项的时候获取的是文件,通过该文件的绝对路径,获取该文件下的所有子文件。
2.如何返回上一级目录
答:每次单击列表项的时候把该目录的绝对路径添加的一个一个ArrayList中,点击返回的时候再把列表中最后一个文件去除后的最后一个路径取出来,就是上一级目录了
源码
import android.app.AlertDialog;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.AdapterView;import android.widget.Button;import android.widget.ListView;import android.widget.Toast;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import java.util.ArrayList;/** * 文件管理器主要功能实现 * 1.列出系统目录下所有文件及文件夹 * 2.点击文件夹 可以进入下一级目录 * 3.点击返回可以进入上一级目录 * 4.为文件或文件夹添加相应的图标,列出文件夹下的文件和文件夹的数量,文件最后被修改的时间 * 5.点击文件的时候为文件选择相应的方式打开 */public class MainActivity extends AppCompatActivity { private ListView lv; private Button btnBack,btnGo; private MyAdapter myAdapter; private FileUtil fileUtil; private ArrayList<String> pathList; private String upPath; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init();//初始化用户界面 } private void init() { fileUtil=new FileUtil(); pathList=new ArrayList<String>(); upPath=Environment.getExternalStorageDirectory().getAbsolutePath(); pathList.add(upPath); fileUtil.getFiles(upPath); lv= (ListView) findViewById(R.id.lv); btnBack= (Button) findViewById(R.id.btn_back); btnGo= (Button) findViewById(R.id.btn_go); btnBack.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(pathList.size()>1){ pathList.remove(pathList.size()-1); upPath=pathList.get(pathList.size()-1); fileUtil.getFiles(upPath); setListView(); }else{ Toast.makeText(MainActivity.this,"这是最前面了",Toast.LENGTH_SHORT).show(); } } }); lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { File fileItem=fileUtil.fileList.get(position); if(fileItem.isFile()){ if(fileItem.getName().endsWith("jpg")||fileItem.getName().endsWith("jpeg")||fileItem.getName().endsWith("bmp")||fileItem.getName().endsWith("png")) { Intent intentImg = new Intent(Intent.ACTION_VIEW); intentImg.setDataAndType(Uri.fromFile(fileItem), "image/*"); startActivity(intentImg); } if(fileItem.getName().endsWith("mp4")||fileItem.getName().endsWith("wmv")){ Intent intentVideo = new Intent(Intent.ACTION_VIEW); intentVideo.setDataAndType(Uri.parse(fileItem.getAbsolutePath()), "video/*"); startActivity(intentVideo); } if(fileItem.getName().endsWith("txt")){ Intent intentTxt=new Intent(MainActivity.this,TxtRead.class); intentTxt.putExtra("content",readTxt(fileItem)); startActivity(intentTxt); } AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this).setTitle("警告").setMessage("这是一个文件"); }else{ pathList.add(fileItem.getAbsolutePath()); fileUtil.getFiles(fileItem.getAbsolutePath()); setListView(); } } }); } public String readTxt(File file){ InputStreamReader inputStreamReader = null; try { inputStreamReader = new InputStreamReader(new FileInputStream(file), "gbk"); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } BufferedReader reader = new BufferedReader(inputStreamReader); StringBuffer sb = new StringBuffer(""); String line; try { while ((line = reader.readLine()) != null) { sb.append(line); sb.append("\n"); } } catch (IOException e) { e.printStackTrace(); } return sb.toString(); } public void setListView(){ myAdapter=new MyAdapter(this,fileUtil.fileList); lv.setAdapter(myAdapter); } @Override protected void onResume() { super.onResume(); setListView(); }}
这是文件操作类
import java.io.File;import java.util.ArrayList;/** * Created by Administrator on 2016/9/5. */public class FileUtil { public ArrayList<File> fileList=new ArrayList<File>(); public int fileCounter; public int forderCounter; //获取某个路径下的所有文件 public ArrayList getFiles(String path){ File file=new File(path); fileList.clear(); if(file.exists()){ if(file.isFile()){}else{ File[] files=file.listFiles(); for(File f:files){ fileList.add(f); } } } return fileList; } public void getFileNum(File file){ fileCounter=0; forderCounter=0; fileList.clear(); if(file.isFile()){}else{ getFiles(file.getAbsolutePath()); for(File f:fileList){ if(f.isFile()){ fileCounter++; }else{ forderCounter++; } } } }}
这是自定义的adapter
public class MyAdapter extends BaseAdapter { private Context context; private ArrayList<File> fileList; private LinearLayout layout; FileUtil fileUtil=new FileUtil(); public MyAdapter(Context context,ArrayList fileList) { this.context = context; this.fileList=fileList; } @Override public int getCount() { return fileList.size(); } @Override public Object getItem(int position) { return fileList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater=LayoutInflater.from(context); layout= (LinearLayout) inflater.inflate(R.layout.cell,null); TextView tv1= (TextView) layout.findViewById(R.id.tv1); TextView tv2= (TextView) layout.findViewById(R.id.tv2); ImageView imageView= (ImageView) layout.findViewById(R.id.image_view); File file=fileList.get(position); fileUtil.getFileNum(file); if(file.isFile()){ if(file.getName().endsWith("txt")){ imageView.setImageResource(R.drawable.txt); }else if(file.getName().endsWith("jpg")||file.getName().endsWith("jpeg")||file.getName().endsWith("bmp")||file.getName().endsWith("png")) { imageView.setImageBitmap(ThumbnailUtil.getImageThumbnail(file.getAbsolutePath(),50,50)); }else if(file.getName().endsWith("mp4")||file.getName().endsWith("wmv")){ imageView.setImageBitmap(ThumbnailUtil.getVideoThumbnail(file.getAbsolutePath(),50,50, MediaStore.Images.Thumbnails.MICRO_KIND)); }else{ imageView.setImageResource(R.drawable.wenhao); } tv1.setText(file.getName()); }else { imageView.setImageResource(R.drawable.wjj); tv1.setText(file.getName()+" 文件:"+fileUtil.fileCounter+" 文件夹:"+fileUtil.forderCounter); } tv2.setText(new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss").format(new Date(file.lastModified()))); return layout; }}
缩略图类
public class ThumbnailUtil { public static Bitmap getImageThumbnail(String url, int width, int height) { Bitmap bitmap=null; BitmapFactory.Options options=new BitmapFactory.Options(); options.inJustDecodeBounds=true; bitmap=BitmapFactory.decodeFile(url,options); options.inJustDecodeBounds=false; int beWidth = options.outWidth / width; int beHeight = options.outHeight / height; int be = 1; if (beWidth < beHeight) { be = beWidth; } else { be = beHeight; } if (be <= 0) { be = 1; } options.inSampleSize = be; bitmap = BitmapFactory.decodeFile(url, options); bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height, ThumbnailUtils.OPTIONS_RECYCLE_INPUT); return bitmap; } /** * 获取视频的缩略图 * @param uri * @param width * @param height * @param kind * @return bitmap */ public static Bitmap getVideoThumbnail(String uri, int width, int height, int kind) { Bitmap bitmap=null; bitmap = ThumbnailUtils.createVideoThumbnail(uri,kind); bitmap = ThumbnailUtils.extractThumbnail(bitmap,width,height,ThumbnailUtils.OPTIONS_RECYCLE_INPUT); return bitmap; }}
布局很简单就不列举了上传一张图就行了
0 0
- Android 文件管理器 Android文件管理器源代码
- Android学习-文件管理器
- Android 文件管理器
- android简易文件管理器
- 文件管理器-android源代码
- Android 文件管理器
- android OI文件管理器
- android 文件管理器
- 开源 android 文件管理器
- Android文件管理器
- Android文件管理器
- Android之简单文件管理器
- Android之简单文件管理器
- Android 之简单文件管理器
- Android 之简单文件管理器
- Android学习之文件管理器
- Android 之简单文件管理器
- android文件管理器导航栏
- jquery取值与赋值
- OneNote同时设置中英文字体显示(雅黑+Consolas)
- Codeforces Round #336 (Div. 1)-B. Zuma(区间dp)
- JSONObject JSONArray使用备忘
- session个某个属性多次赋值
- Android文件管理器
- 把数组排成最小的数
- 页面打印错误 抛出异常 公司内部用
- Android NDK/JNI入门
- iOS FMDB 事务的理解
- 汉诺塔(Hanoi)递归算法笔记记录
- Qt QChart 中 QValueAxis 和 QCategoryAxis 区别
- 扩展欧几里得算法&同余方程&模m乘法逆元详解
- JAVA001对象导论07