![](/img/trans.png)
[英]Android Studio - VideoView only plays videos witth https and not http
[英]Android VideoView plays 2 videos at the same time
我试图发挥videoview
另一个视频视图的顶部。 第一个视频视图已暂停,第二个正在播放。 它似乎可以正常工作,但屏幕上没有第二个视频(尽管我听到了音频,并且看到了通常会出现在顶部的控件)。 我假设这是某种订单问题。 有什么想法吗。 顺便说一句,我在主视频视图之上显示其他视图并让视频填充背景没有问题。
那是行不通的-VideoView是特殊的,因为它在普通View中“打”了一个孔以允许直接访问显示像素(或者用Android术语来说,“ Surface”-VideoView是SurfaceView的子类)。 您不能将两个SurfaceView彼此叠加-第一个抓取像素(Surface)的对象将“拥有”它。 (请参见SurfaceHolder.Callback.surfaceCreated()/ surfaceDestroyed())
SurfaceView顶部的其他视图也可以工作,因为该框架将构成Surface顶部的普通视图的显示位。 它无法使用其他VideoView(即SurfaceView)来执行此操作,因为没有任何内容可以编写。
使用Thread
控制两个视频
<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开始播放videoView1的设置可见性时。 然后您可以在需要时使其可见。
您可以像这样在顶部的视频视图b上添加视频视图a,
parentview.removeview(a);
parentview.removviewe(b);
parentview.addview(a);
parentview.addview(b);
parentview.invalidate();
蒂为我工作。 希望对您有所帮助。
我目前不知道这是否有帮助,但是我设法得到了与您想要的类似的东西...
我需要将VideoView嵌套在SurfaceView的顶部; 只要它们不重叠100%,它就可以工作。 (我的意思是,我的Surfaceview是整个屏幕,而videoview只是屏幕的一小部分)
问题是-由于您无法合成SurfaceView,因此第一个要捕获像素的像素就是将要显示的像素。 直觉会促使您在XML中不那么重要的视图之后对优先视图进行Z排序-但是正如我之前所说,第一个保留像素的视图仍然存在,因此请确保先定义较小的视图,然后再定义用更大的覆盖它。
这将导致以下行为:较小的(在我的情况下为预览视图)获取所述X * Y像素,然后“背景”表面视图(根据XML应该位于其顶部)占据其余部分并忽略较小的表面。
我不太确定如何处理这两个事件,因为我只需要在这两个视图中播放流,而不会对这两个组件生成的任何类型的点击/事件做出反应,但是如果您遵循此步骤,可能会期望route-较大的视图将拦截较小视图区域中的所有点击(因为根据XML,它位于顶部),因此也许您必须在创建时也以编程方式将其移到顶部。
希望能帮助到你。
编辑:虽然...它像它只工作一次。 这确实是一项正在进行的工作。 从任何活动返回后,我都无法阻止更大的观点要求一切:/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.