如何在Android应用中显示GIFV文件?

时间:2017-09-26 17:03:11

标签: android animated-gif imgur

我无法相信这有多难。我正在制作一个相当简单的应用程序,并使用Reddit的AWW subreddit中的数据。很多帖子都是GIFV格式,我似乎找不到在Android视图中显示这些文件的方法。我已经尝试过Picasso,Fresco,Glide ......都没有用。

有人可以告诉我需要什么魔法或使用什么咒语?

2 个答案:

答案 0 :(得分:1)

如果您从Reddit中撤出,您会注意到许多内容来自Imgur。在加载的Imgur页面中,gifv文件实际上是作为嵌入页面的MP4呈现的。

对于imgur:

选项一,显示嵌入在Webview中的整个URL。这是一个非常痛苦的方法,因为需要设置许多配置选项才能使其正常工作或实现扩展。此外,为了解析网页,并在页面上运行javascript和其他网页元素,还有很多不必要的开销。

选项二,使用Imgur API检索图像。 (我没试过这个)

选项三,Imgur Gifv文件使用mp4视频文件显示其内容。对于给定的Imgur gifv url,如果您检查页面源,找到mp4源URL并在exoplayer中显示它。 (例如http://i.imgur.com/1t9KQjg.gifv使用http://i.imgur.com/1t9KQjg.mp4)。

XML

<com.google.android.exoplayer2.ui.SimpleExoPlayerView android:id="@+id/my_player"
                                                      android:layout_width="match_parent"
                                                      android:layout_height="match_parent"/>

爪哇:

mPlayerView =  mCardView.findViewById(R.id.my_player);

mPlayer = ExoPlayerFactory.newSimpleInstance(
              new DefaultRenderersFactory(browserActivity),
              new DefaultTrackSelector(),
              new DefaultLoadControl());
mPlayer.setPlayWhenReady(true);
mPlayer.setRepeatMode(Player.REPEAT_MODE_ALL);

mPlayerView.setPlayer(mPlayer);


Uri uri = Uri.parse('http://i.imgur.com/1t9KQjg.mp4');

DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(browserActivity, Util.getUserAgent(browserActivity, "Obelisk"), null);
ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();

MediaSource videoSource = new ExtractorMediaSource(uri, dataSourceFactory, extractorsFactory, null, null);

mPlayer.prepare(videoSource);

答案 1 :(得分:0)

您可以使用Glide加载GIF甚至视频。

可以用作:

GlideApp.with(myFragment)
    .load(url)
    .centerCrop()
    .placeholder(R.drawable.loading_spinner)
    .into(myImageView);

GitHub的:Glide