Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从视频url获取缩略图并在gridview上加载非常缓慢_Android_Gridview_Video_Adapter_Thumbnails - Fatal编程技术网

Android 从视频url获取缩略图并在gridview上加载非常缓慢

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) {

我正在从SD卡获取视频url列表并传递到适配器。在适配器中,从视频的url创建缩略图位图。加载gridview变得非常慢,滚动也非常慢。是否有任何方法可以使从sd卡获取缩略图变得更快、更容易

@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。真是太棒了