我正在开发一个 Android 应用程序,它应该在 RecyclerView
中显示视频缩略图列表。然后,新 Activity 将播放所选缩略图的视频。
如何将 com.vimeo.networking.model.Picture
设置为 Android ImageView
?
我的代码:
mVimeoClient.fetchNetworkContent(VIDEO_URI, new ModelCallback<VideoList>(VideoList.class) {
@Override
public void success(VideoList videoList) {
ArrayList<Video> videoArrayList = videoList.data;
Video video = videoArrayList.get(0);
ArrayList<com.vimeo.networking.model.Picture> arrayListPics = video.pictures.sizes;
// imageView.setImageDrawable((Drawable) pictureAL.get(0));
imageView.setImageBitmap( (Bitmap) arrayListPics.get(0));
}
@Override
public void failure(VimeoError error) {
}
});
}
setImageBitmap()
和 setImageDrawable()
抛出
java.lang.ClassCastException
最佳答案
vimeo-networking
库中的 Picture
对象(从 arrayListPics.get(0)
返回的对象)不是 Bitmap
因此不能转换为一个。 Picture
对象上有一个名为 mLink
的字段,可以通过 Picture#getLink()
访问它。这将返回一个 URI 字符串,然后您可以在 ImageView
上设置它。
可用于实现此功能的最简单代码是:
// The ImageView you want to put the thumbnail in
ImageView yourImageView = <insert your ImageView here>;
// The video whose thumbnail you want
Video yourVideo = <insert your Video here>;
// The collection of `Picture` objects associated with this video.
// Each `Picture` in this "collection" is a different size
PictureCollection yourVideosPictures = yourVideo.getPictures();
// Get the first thumbnail/picture from this collection (not recommended)
Picture videoThumbnailPicture = yourVideosPictures.getPictures().get(0);
// The URI to the image of the thumbnail
String videoThumbnailUri = videoThumbnailPicture.getLink();
// Convert the String URI to an actual URI object
final Uri uri = Uri.parse(videoThumbnailUri);
yourImageView.setImageURI(uri);
我说这是最简单的,因为在设置图像 uri 时您应该做更多的事情。一件事是你应该根据 ImageView
的宽度从 yourVideosPictures
中抓取 Picture
,这样你就不会不必要地拉下一个图片比您需要的大。
您还应该可能不只是将图像 URI 直接设置到 yourImageView
上,而是您应该使用一些图像缓存库(或一些缓存实现)。
我建议研究 Picasso、Glide 或 Fresco。或者只是谷歌“Android 上的图像缓存”。
关于android - ImageView 中的 Vimeo 视频缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51173339/