2

我正在尝试videoview在另一个视频视图上播放。第一个视频视图暂停,而第二个正在播放。它似乎可以工作,但屏幕上没有出现第二个视频(尽管我听到了音频并看到了通常会出现在顶部的控件)。我假设这是某种订单问题。有什么想法吗。顺便说一句,我在主视频视图之上显示其他视图并让视频填充背景没有问题。

4

5 回答 5

3

那是行不通的——VideoView 的特殊之处在于它在普通视图中“打孔”以允许直接访问显示像素(或者,在 android 术语中,“Surface”——VideoView 是 SurfaceView 的子类)。您不能将两个 SurfaceView 叠加在一起 ​​- 第一个抓取像素(Surface)将“拥有”它。(参见 SurfaceHolder.Callback.surfaceCreated()/surfaceDestroyed())

SurfaceView 之上的其他 View确实有效,因为框架将组成 Surface 之上普通 View 的显示位。它不能用另一个 VideoView(即 SurfaceView)来做到这一点,因为没有什么可组合的。

于 2011-02-09T21:46:19.407 回答
1

用于Thread控制两个视频

于 2012-05-28T11:04:10.523 回答
1

<VideoView android:id="@+id/videoView1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"/>
<VideoView android:id="@+id/videoView2" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"/>

当 videoView2 开始播放 setvisibilty 的 videoView1 时不可见。然后您可以在需要时使其可见。

于 2011-03-01T11:39:17.417 回答
0

你可以在顶部的videoview b上添加videoview a,像这样,

     parentview.removeview(a);
    parentview.removviewe(b);
    parentview.addview(a);
    parentview.addview(b);
parentview.invalidate();

蒂为我工作。我希望它能有所帮助。

于 2015-03-13T09:18:32.477 回答
0

我不知道这是否有帮助,但我设法得到了类似于你想要的东西......

我需要在 SurfaceView 上嵌套一个 VideoView;只要它们不重叠 100% 就可以工作。(我的意思是,我的表面视图是整个屏幕,而视频视图只是屏幕的一小部分)

问题是 - 因为你不能组成 SurfaceViews,所以第一个抓取像素的就是将显示的那个。直觉会驱使您在 XML 中不太重要的视图之后对优先视图进行 Z 排序 - 但正如我之前所说,第一个抓取像素的视图会保留,因此请确保先定义较小的视图,然后用更大的覆盖它。

这将导致这样的行为,即较小的(在我的情况下为预览视图)获取所述 X * Y 像素,然后“背景”表面视图(根据 XML 应该位于其顶部)占据其余部分并忽略较小的表面。

我不太确定如何处理来自这两个视图的事件,因为我只需要在这两个视图中播放流,而不会对这两个组件生成的任何类型的点击/事件做出反应,但如果你遵循这个,可能会预期路线 - 较大的视图将拦截在较小的视图区域中进行的所有点击(因为它根据 XML 在顶部)所以也许您必须在创建时以编程方式将其移动到顶部。

希望能帮助到你。

编辑:虽然......它喜欢它只工作一次。这确实是一项正在进行的工作。从任何活动返回后,我无法阻止更大的视野声称一切:/

于 2012-01-09T18:06:42.210 回答