Android 从视频url获取缩略图并在gridview上加载非常缓慢
我正在从SD卡获取视频url列表并传递到适配器。在适配器中,从视频的url创建缩略图位图。加载gridview变得非常慢,滚动也非常慢。是否有任何方法可以使从sd卡获取缩略图变得更快、更容易Android 从视频url获取缩略图并在gridview上加载非常缓慢,android,gridview,video,adapter,thumbnails,Android,Gridview,Video,Adapter,Thumbnails,我正在从SD卡获取视频url列表并传递到适配器。在适配器中,从视频的url创建缩略图位图。加载gridview变得非常慢,滚动也非常慢。是否有任何方法可以使从sd卡获取缩略图变得更快、更容易 @Override public View getView(int position, View convertView, ViewGroup parent) { final ViewHolder holder; if (convertView == null) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
if (convertView == null) {
convertView = infalter.inflate(R.layout.gallery_item, null);
holder = new ViewHolder();
holder.imgQueue = (ImageView) convertView.findViewById(R.id.imgQueue);
holder.imgQueueMultiSelected = (ImageView) convertView
.findViewById(R.id.imgQueueMultiSelected);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.imgQueue.setTag(position);
try {
Bitmap bitmap=ThumbnailUtils.createVideoThumbnail(data.get(position).sdcardPaththumbvideo, MediaStore.Video.Thumbnails.MINI_KIND);
if (bitmap==null) {
holder.imgQueue.setImageResource(R.drawable.no_media);
}
else{
holder.imgQueue.setImageBitmap(bitmap);
}
} catch (Exception e) {
e.printStackTrace();
}
return convertView;
}
将
ThumbnailUtils.createVideoThumbnail()
移出主应用程序线程。在中,我曾经异步加载缩略图,将我的自定义VideoThumbnailImage
作为ViewBinder
应用到我的SimpleCursorAdapter
上,显示查找所有视频的结果:
private static class ThumbnailBinder implements
SimpleCursorAdapter.ViewBinder {
@Override
public boolean setViewValue(View v, Cursor c, int column) {
if (column == c.getColumnIndex(MediaStore.Video.Media._ID)) {
VideoThumbnailImage thumb=
new VideoThumbnailImage(
c.getInt(column),
MediaStore.Video.Thumbnails.MICRO_KIND);
((SmartImageView)v).setImage(thumb,
R.drawable.ic_media_video_poster);
return(true);
}
return(false);
}
}
private static class VideoThumbnailImage implements SmartImage {
private int videoId;
private int thumbnailKind;
VideoThumbnailImage(int videoId, int thumbnailKind) {
this.videoId=videoId;
this.thumbnailKind=thumbnailKind;
}
@Override
public Bitmap getBitmap(Context ctxt) {
return(MediaStore.Video.Thumbnails.getThumbnail(ctxt.getContentResolver(),
videoId,
thumbnailKind,
null));
}
}
谢谢CW,让我试试这个,在我能够维护视频缩略图的缓存之后。非常感谢您提供的SmartImageView。真是太棒了