我无法相信这有多难。我正在制作一个相当简单的应用程序,并使用Reddit的AWW subreddit中的数据。很多帖子都是GIFV格式,我似乎找不到在Android视图中显示这些文件的方法。我已经尝试过Picasso,Fresco,Glide ......都没有用。
有人可以告诉我需要什么魔法或使用什么咒语?
答案 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