目前我正在使用picasso将MediaStore图像缩略图加载到ListView以下代码片段中:( video.getData()返回图像的实际路径,如mnt/sdcard/...)
Picasso.with(this.context)
.load(new File(photo.getData()))
.resize(50, 50).config(config)
.centerCrop()
.into(viewHolder.imageViewItem);
Run Code Online (Sandbox Code Playgroud)
现在我无法通过传递video.getData()而不是加载MediaStore视频缩略图photo.getData()?
Ram*_*Ram 38
首先,您需要创建VideoRequestHandler
public class VideoRequestHandler extends RequestHandler{
public String SCHEME_VIDEO="video";
@Override
public boolean canHandleRequest(Request data)
{
String scheme = data.uri.getScheme();
return (SCHEME_VIDEO.equals(scheme));
}
@Override
public Result load(Request data, int arg1) throws IOException
{
Bitmap bm = ThumbnailUtils.createVideoThumbnail(data.uri.getPath(), MediaStore.Images.Thumbnails.MINI_KIND);
return new Result(bm,LoadedFrom.DISK);
}
}
Run Code Online (Sandbox Code Playgroud)
之后
VideoRequestHandler videoRequestHandler;
Picasso picassoInstance;
Run Code Online (Sandbox Code Playgroud)
只构建一次
videoRequestHandler = new VideoRequestHandler();
picassoInstance = new Picasso.Builder(context.getApplicationContext())
.addRequestHandler(videoRequestHandler)
.build();
Run Code Online (Sandbox Code Playgroud)
然后从路径加载文件
picassoInstance.load(VideoRequestHandler.SCHEME_VIDEO+":"+filepath).into(holder.videoThumbnailView);
Run Code Online (Sandbox Code Playgroud)
之前,您有两个选择:
1) 预先调用,例如当您检索视频并存储位图时:
Bitmap thumbnailBitmap = MediaStore.Video.Thumbnails.getThumbnail(content, id, MediaStore.Video.Thumbnails.MINI_KIND, options);
Run Code Online (Sandbox Code Playgroud)
2) 创建自定义下载器(未针对本地媒体进行验证)
但现在,使用 Picasso 2.4,您可以创建 RequestHandler。您可以查看此页面,例如: http: //blog.jpardogo.com/requesthandler-api-for-picasso-library/
在我当前的使用中,我获取缩略图路径,然后使用该路径调用 Picasso。为了获取缩略图路径,我参考了:android get video thumbnail PATH ,而不是 Bitmap。
| 归档时间: |
|
| 查看次数: |
15833 次 |
| 最近记录: |