我不敢相信这是多么困难。我正在制作一个相当简单的应用程序,并使用来自Reddit的AWW subreddit的数据。大部分帖子都是GIFV格式,我似乎无法找到任何方式在Android视图中显示这些文件。我尝试过毕加索,壁画,滑翔......没有任何工作。如何在Android应用程序中显示GIFV文件?
有人能告诉我需要什么魔法或使用什么咒语?
我不敢相信这是多么困难。我正在制作一个相当简单的应用程序,并使用来自Reddit的AWW subreddit的数据。大部分帖子都是GIFV格式,我似乎无法找到任何方式在Android视图中显示这些文件。我尝试过毕加索,壁画,滑翔......没有任何工作。如何在Android应用程序中显示GIFV文件?
有人能告诉我需要什么魔法或使用什么咒语?
如果从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);
什么的嵌入式Web视图?看起来像对我来说最简单的解决方案。 – the4kman
我用webview搞砸了一下,但无法弄清楚如何在没有所有浏览器UI的情况下加载图像。 imgur似乎想要加载它的头部和其他让视图混乱的东西。这不是一个漂亮的解决方案 – szaske