2017-09-26 81 views
0

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

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

+0

什么的嵌入式Web视图?看起来像对我来说最简单的解决方案。 – the4kman

+0

我用webview搞砸了一下,但无法弄清楚如何在没有所有浏览器UI的情况下加载图像。 imgur似乎想要加载它的头部和其他让视图混乱的东西。这不是一个漂亮的解决方案 – szaske

回答

0

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

可作为:

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

GitHub上:Glide

+0

嗯,我试过Glide但不是GlideApp。你能确认你已经尝试过一个实际的GIFV文件吗? GlideApp似乎比Glide有更多的要求,但我会给它一个镜头。 – szaske

0

如果从reddit的拉,你会发现,很多内容来自Imgur。在加载的Imgur页面中,gifv文件实际上呈现为嵌入在页面中的MP4。

对于imgur:

选项之一,显示嵌入在网页视图整个URL。这是一个非常痛苦的方法,因为需要设置很多配置选项才能很好地工作,或者实现缩放。另外,为了解析网页,还有很多不必要的开销,并且在页面上运行javascript和其他web元素。

选项二,使用Imgur API检索图像。 (我还没有尝试过)

选项三,Imgur Gifv文件使用mp4视频文件来显示其内容。对于给定的Imgur gifv网址,如果您检查页面源,请查找mp4源网址并将其显示在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"/> 

的Java:

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); 
相关问题