在GridView中混合ImageView和VideoView

时间:2015-08-31 18:55:49

标签: android gridview imageview android-videoview

我有一些可以是图片或视频的网址。我只是想在GridView(2 * 2)中将它们混合在一起。因此,在构建适配器时,如何基于url使用ImageView或VideoView实例化它?

旧的实现只使用了一个只对图像和视频都有ImageView的布局,并使用clickListeners启动另一个活动来播放视频。默认图像用作所有视频的占位符,这很难看。

如果网址是图片,我只想显示图片;如果是视频,则只显示视频的第一帧,如Instagram,但在2 * 2网格内。

1 个答案:

答案 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.