废话不多说,有效果图:
由于时间关系,只贴出获得video 数据的代码,请自行去做适配gridview 的工作 (红色字体是关键点)
class MyRunnable implements Runnable {
@Override
public void run() {
final String[] COLUMNS = {
MediaStore.Video.Media._ID,
MediaStore.Video.Media.DISPLAY_NAME,
MediaStore.Video.Media.DATE_ADDED,
MediaStore.Video.Media.DATA,
MediaStore.Video.Media.WIDTH,
MediaStore.Video.Media.HEIGHT,
MediaStore.Video.Media.DURATION,
MediaStore.Video.Media.SIZE
};
final String[] TNUMB_COLUMNS = {
MediaStore.Video.Thumbnails.DATA,
MediaStore.Video.Thumbnails.VIDEO_ID
};
Cursor data = getActivity().getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, COLUMNS,
null, null, COLUMNS[2] + " DESC");
List<ViewNewSelectBean> images = new ArrayList<>();
int count = data.getCount();
if (count > 0) {
data.moveToFirst();
do {
ViewNewSelectBean image = new ViewNewSelectBean();//<span style="color:#ff0000;">储存数据的bean</span>
long id = data.getLong(data.getColumnIndexOrThrow(COLUMNS[0]));
image.set_id(id);
String name = data.getString(data.getColumnIndexOrThrow(COLUMNS[1]));
image.setName(name);
long dateTime = data.getLong(data.getColumnIndexOrThrow(COLUMNS[2]));
image.setDataTime(dateTime);
String path = data.getString(data.getColumnIndexOrThrow(COLUMNS[3]));
image.setPath(path);
int width = data.getInt(data.getColumnIndexOrThrow(COLUMNS[4]));// 视频宽
image.setWidth(width);
int height = data.getInt(data.getColumnIndexOrThrow(COLUMNS[5]));// 视频高
image.setHeight(height);
long duration = data.getLong(data.getColumnIndexOrThrow(COLUMNS[6]));// 时长
image.setDuration(duration);
long size = data.getLong(data.getColumnIndexOrThrow(COLUMNS[7]));
image.setSize(size);
<span style="color:#ff0000;"> //缩略图地址</span>
Cursor thumbCursor = getActivity().getContentResolver().query(MediaStore.Video.Thumbnails.EXTERNAL_CONTENT_URI, TNUMB_COLUMNS,MediaStore.Video.Thumbnails.VIDEO_ID + "="+id,null,null );
if(thumbCursor.moveToFirst()){
String thumbPath = thumbCursor.getString(thumbCursor.getColumnIndexOrThrow( MediaStore.Video.Thumbnails.DATA));
image.setThumbPath(thumbPath);
}
images.add(image);
} while (data.moveToNext());
Message msg = new Message();
msg.obj = images;
msg.what = 110;
h.sendMessage(msg);<span style="color:#cc0000;">//数据搞完了 交给handler处理</span>
}
}
}
注: 此图处于重口味修改 开源库:
MultiImageSelector
原库只能多选图片,由于工作需要,被我修改成了图片和视频混合多选的了。具体过程,如有需求,我会在后期补上。谢谢
本文介绍如何在Android应用中获取视频列表及其缩略图,通过关键代码展示实现过程,适用于需要显示视频信息的场景。推荐使用开源库MultiImageSelector进行适配。
3541





