android - ImageView 中的 Vimeo 视频缩略图

标签 android android-imageview vimeo-api vimeo-android

我正在开发一个 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/

相关文章:

android - Android 中应该在 LayoutView 还是 ImageView 中设置背景?

java - Android万能音乐播放器在MediaItem ViewHolder中添加专辑封面

android - 将图像添加到 gridlayout 会更改整个布局

php - 使用正则表达式 preg_match 获取 id video vimeo

android - Vimeo 上传 API - 尝试删除票证时出现 "Invalid state"错误

android - 在 Android 上使用 Retrofit 时出现 Vimeo SSL 错误

android - 可以为着色器统一设置初始值吗? (安卓,OpenGL ES 2.0)

android - 在 android 中使用 CheckedTextView 需要帮助

java - 将时间戳中的时间段 (AM/PM) 本地化为另一种语言

android - 多个 API key fcm 和谷歌地图