这个函数是通用的,只要提供路径就可以查询出该目录下所有图片的路径信息,并保存到一个List
1.获取SDCard中某个目录下图片路径集合
public List
List
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
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中某目录下的所有图片,第二个函数主要是显示图片
用下面这种方式能实现查询实现查询sd卡某一个子目录下的图片文件详细信息 :
//selection: 指定查询条件 String selection = MediaStore.Images.Media.DATA + " like %?"; //设定查询目录 String path="/mnt/sdcard/youpicpath"; //定义selectionArgs: String[] selectionArgs = {path+"%"}; c = this.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, selection, selectionArgs, null);
其实原理就是改变了下查询语句,在查询条件中增加了MediaStore.Images.Media.DATA
字段的限制条件,必须是和指定目录能匹配的才被查询,注意selection
和selectionArgs
参数是配合使用的。