gpt4 book ai didi

android - 如何使用方形 picasso 库加载视频缩略图?

转载 作者:IT王子 更新时间:2023-10-28 23:29:22 25 4
gpt4 key购买 nike

目前我正在使用 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);

现在我无法通过仅传递 video.getData() 而不是 photo.getData() 来加载 MediaStore 视频缩略图?

最佳答案

首先你需要创建 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;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
try {
Size size = new Size(250, 250);
bm = ThumbnailUtils.createVideoThumbnail(new File(data.uri.getPath()), size, null);
} catch (IOException e) {
e.printStackTrace();
}
}
else
{
bm = ThumbnailUtils.createVideoThumbnail(data.uri.getPath(), MediaStore.Images.Thumbnails.MINI_KIND);
}
return new Result(bm,LoadedFrom.DISK);
}
}

之后

 VideoRequestHandler videoRequestHandler;
Picasso picassoInstance;

只构建一次

 videoRequestHandler = new VideoRequestHandler();
picassoInstance = new Picasso.Builder(context.getApplicationContext())
.addRequestHandler(videoRequestHandler)
.build();

然后从路径加载文件

 picassoInstance.load(VideoRequestHandler.SCHEME_VIDEO+":"+filepath).into(holder.videoThumbnailView);

2020 年 10 月更新

ThumbnailUtils.createVideoThumbnail(data.uri.getPath(), MediaStore.Images.Thumbnails.MINI_KIND);

在 Android Q 中已弃用。我将在 Kotlin 中编写:

val bm = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
ThumbnailUtils.createVideoThumbnail(
File(data.uri.path!!),
Size(200f.toPx(), 200f.toPx()),
CancellationSignal()
)
} else {
ThumbnailUtils.createVideoThumbnail(
data.uri.path!!,
MediaStore.Images.Thumbnails.MINI_KIND
)
}

to Px 是一个扩展函数,如下所示;

fun Float.toPx() =
TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, this, Resources.getSystem().displayMetrics)
.toInt()

你可以使用任何 dp 值 :) 我希望这可以帮助你 :)

关于android - 如何使用方形 picasso 库加载视频缩略图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24038294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com