我有一些可以是图片或视频的网址。我只是想在GridView(2 * 2)中将它们混合在一起。因此,在构建适配器时,如何基于url使用ImageView或VideoView实例化它?
旧的实现只使用了一个只对图像和视频都有ImageView的布局,并使用clickListeners启动另一个活动来播放视频。默认图像用作所有视频的占位符,这很难看。
如果网址是图片,我只想显示图片;如果是视频,则只显示视频的第一帧,如Instagram,但在2 * 2网格内。
答案 0 :(得分:1)
您可以在网格项目布局上一起使用ImageView和VideoView。
k
在适配器#getView()中,您应该检查网址的类型并设置其中一个,并设置隐藏的其他网址。
<FrameLayout
android:layout_width="match_parent"
android:layout_height="@dimen/post_image_size">
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="@dimen/post_image_size"/>
<VideoView
android:id="@+id/videoView"
android:layout_width="match_parent"
android:layout_height="@dimen/post_image_size" />
</FrameLayout>
PS1:我用Picasso设置了ImageView。
PS2:在Instagram中,我们可以使用Instagram API获取视频帖子的图像。我们还有mediaType标志来确定它是视频还是图像。您可以从here.查看Instagram API我已经开发了一个Instagram重新发布应用。在gridView中,我使用的是来自视频帖子的API的图像。点击视频项目时,我也会开始新的活动来播放视频。但是,如果您确实需要捕获视频帧,则可以看到此entry.