本文介绍Android开发中如何获取SDCard中某目录下的所有图片并显示出来,下面的我们提供的这个函数是通用的,只要提供路径就可以查询出该目录下所有图片的路径信息,并保存到一个List<String>中。
1.获取SDCard中某个目录下图片路径集合
public List<String> getPictures(final String strPath) { List<String> list = new ArrayList<String>(); File file = new File(strPath); File[] allfiles = file.listFiles(); if (allfiles == null) { return null; } for(int k = 0; k < allfiles.length; k++) { final File fi = files[i]; if(fi.isFile()) { int idx = fi.getPath().lastIndexOf("."); if (idx <= 0) { continue; } String suffix = fi.getPath().substring(idx); if (suffix.toLowerCase().equals(".jpg") || suffix.toLowerCase().equals(".jpeg") || suffix.toLowerCase().equals(".bmp") || suffix.toLowerCase().equals(".png") || suffix.toLowerCase().equals(".gif") ) { list.add(fi.getPath()); } } } return list; }
2.获取sd卡下的图片并显示
List<String> list = getPictures(Environment.getExternalStorageDirectory() + ""); if (list != null) { Log.d(TAG, "list.size = " + list.size()); for (int i = 0; i < list.size(); i++) { Bitmap bm = BitmapFactory.decodeFile(list.get(i)); int top = 30; if (i > 0) { top += BitmapFactory.decodeFile(list.get(i - 1)).getHeight() + 2; } canvas.drawBitmap(bm, 0, top, paint); } } else { Log.d(TAG, "list is null!!!"); }
本文提供两个函数,第一个函数主要是获取SDCard中某目录下的所有图片,第二个函数主要是显示图
保存图片可以封装成一个类:
package com.mogunote.adapter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import android.graphics.Bitmap; import android.graphics.Bitmap.CompressFormat; import android.os.Environment; import android.view.View; public class SaveViewUtil { private static final File rootDir = new File(Environment.getExternalStorageDirectory()+File.separator+"paints/"); /**保存截图的方法*/ public static boolean saveScreen(View view){ //判断sdcard是否可用 if(!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){ return false; } if(!rootDir.exists()){ rootDir.mkdir(); } view.setDrawingCacheEnabled(true); view.buildDrawingCache(); Bitmap bitmap = view.getDrawingCache(); try { bitmap.compress(CompressFormat.JPEG, 100, new FileOutputStream(new File(rootDir,System.currentTimeMillis()+".jpg"))); return true; } catch (FileNotFoundException e) { e.printStackTrace(); return false; }finally{ view.setDrawingCacheEnabled(false); bitmap = null; } } }
调用封装类:
if(SaveViewUtil.saveScreen(hbView)){ Toast.makeText(this, "截图成功", 0).show(); }else{ Toast.makeText(this, "截图失败,请检查sdcard是否可用", 0).show(); }