如何在Android应用程序中显示GIFF文件?

如何在Android应用程序中显示GIFF文件?,android,animated-gif,imgur,Android,Animated Gif,Imgur,我不敢相信这有多困难。我正在制作一个相当简单的应用程序,并使用Reddit的AWW subreddit中的数据。大部分帖子都是GIFF格式的,我似乎找不到任何方法在Android视图中显示这些文件。我试过毕加索、壁画、滑翔……都没用 有人能告诉我需要什么魔法或使用什么咒语吗?你可以使用滑翔来加载GIF甚至视频 可以用作: GlideApp.with(myFragment) .load(url) .centerCrop() .placeholder(R.drawable.l

我不敢相信这有多困难。我正在制作一个相当简单的应用程序,并使用Reddit的AWW subreddit中的数据。大部分帖子都是GIFF格式的,我似乎找不到任何方法在Android视图中显示这些文件。我试过毕加索、壁画、滑翔……都没用


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

你可以使用滑翔来加载GIF甚至视频

可以用作:

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

GitHub:

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

可以用作:

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

GitHub:

如果您是从Reddit获取内容,您会注意到很多内容都来自Imgur。在加载的Imgur页面中,gifv文件实际上显示为嵌入在页面中的MP4

对于imgur:

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

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

选项三,Imgur Gifv文件使用mp4视频文件显示其内容。对于给定的Imgur gifv url,如果您检查页面源,请找到mp4源url并在exoplayer中显示。(例如使用)

XML


如果您使用Reddit,您会注意到许多内容来自Imgur。在加载的Imgur页面中,gifv文件实际上显示为嵌入在页面中的MP4

对于imgur:

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

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

选项三,Imgur Gifv文件使用mp4视频文件显示其内容。对于给定的Imgur gifv url,如果您检查页面源,请找到mp4源url并在exoplayer中显示。(例如使用)

XML


嵌入式web视图怎么样?对我来说,这似乎是最简单的解决方案。我在webview上弄得有点乱,但不知道如何在没有所有浏览器ui的情况下加载图像。imgur似乎想加载它的头文件和其他会扰乱视图的东西。这不是一个很好的解决方案嵌入式web视图怎么样?对我来说,这似乎是最简单的解决方案。我在webview上弄得有点乱,但不知道如何在没有所有浏览器ui的情况下加载图像。imgur似乎想加载它的头文件和其他会扰乱视图的东西。这不是一个很好的解决方案嗯,我试过Glide,但没有GlideApp。你能确认你试过一个真正的GIFF文件吗?GlideApp似乎比Glide有更多的要求,但我会试一试。嗯,我试过Glide,但没有试过GlideApp。你能确认你试过一个真正的GIFF文件吗?GlideApp似乎比Glide有更多的要求,但我要试一试。
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);