在GridView中混合使用ImageView和VideoView

自由鸟

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

旧的实现只使用了一个既包含图像又包含视频的ImageView的布局,并使用clickListeners启动另一个活动来播放视频。默认图像用作所有视频的占位符,这很丑陋。

我只想显示图片(如果url是图片),以及视频的第一帧,如果它是视频(如Instagram),但在2 * 2网格内。

栓塞剂

您可以在网格项目布局上同时使用ImageView和VideoView。

        <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>

在adapter#getView()中,应检查URL的类型并设置其中之一,并设置不可见的其他URL。

    if (!isVideo(url)) {
        videoView.setVisibility(View.GONE);
        Picasso.with(this).load(imageUrl)
                .into(imageView);
    } else {
        Uri uri = Uri.parse(url);
        videoView.setVideoURI(uri);
        videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                imageView.setVisibility(View.GONE);
                videoView.setBackgroundColor(Color.TRANSPARENT);
                videoView.requestFocus();
                videoView.setOnTouchListener(new View.OnTouchListener() {
                    @Override
                    public boolean onTouch(View v, MotionEvent event) {
                        // start your new activity to play video
                        return false;
                    }
                });
            }
        });
    }

PS1:我使用毕加索设置ImageView。

PS2:在Instagram中,我们可以使用Instagram API获取视频帖子的图像。另外,我们还有mediaType标志来确定它是视频还是图像。您可以从这里检查Instagram API 我已经开发了一个instagram repost应用。在gridView中,我使用的是来自视频帖子API的图像。单击视频项目时,我也开始一个新的活动来播放视频。但是,如果您确实需要捕获视频帧,则可以看到此条目。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

同一活动上的 ImageView 和 VideoView

gridview中的imageview高度

Keras中CPU和GPU的混合使用

DayDream中的VideoView和MediaController?

使gridView中的imageView可单击

Android中的导航抽屉和VideoView

在单个函数中混合使用'__try'和'try'-通过Lambda

使用YAML在服务定义中混合位置和键参数

在_fields_中混合使用ctypes和python类

在C ++ 20中可以混合使用模块和标题吗?

在相同的处理方式中混合使用HibernateTemplate和JdbcTemplate

如何在C ++中混合使用数组和映射?

在Rust FFI中混合使用静态库和动态库

在Vue 2中混合使用动态和条件类名

如何在 BigQuery SQL 中混合使用 IF 和 CASE

使用混合類型和混合鍵控/非鍵控在 Swift 中解碼 JSON

使用CustomAdapter更新GridView内部的ImageView

如何在Angular打字稿中使用MatSort以混合整数和字符串对gridview列进行排序

在excel的“IF”块中混合“AND”和“OR”

以编程方式设置GridView和ImageView的宽度和高度

如何使用 Flutter 在 GridView 中启用和禁用按钮?

延迟加载在gridview中的图像混合了滚动上的位置

ImageView和CollectionView中的按钮

使用Adaper的ImageView和TextView

包含在Rails中:如何在同一查询中混合使用OR和外部联接?

使用ES5语法在Node中混合使用默认导出和命名导出

GridView混合图像

使用自定义CursorAdapter和Cursor Loader时,如何使GridView和GridView项目在片段中膨胀?

ImageView 边缘在 GridView 中旋转时被切断