【问题标题】:How to programmatically change the z-order of VideoViews in Android如何以编程方式更改 Android 中 VideoViews 的 z 顺序
【发布时间】:2012-09-26 12:43:12
【问题描述】:

我有一个带有 RelativeLayout 的 android 应用,我以编程方式向其中添加了多个 VideoView,所有这些都同时播放。 VideoView 可以通过拖动来移动,并且可以移动以使它们重叠。

问题是我找不到在运行时更改它们的 z 顺序的方法。 .bringToFront() 将视图置于最前面以接收触摸事件,但实际视频的顺序保持不变。

我已尝试通过 .removeChild() 删除并重新添加 videoView,但这会停止并重置视频。

有没有办法改变视频的 z 顺序? “hacky”方式也可以,例如删除广告重新添加视图而不停止和重置视频。

谢谢

附:这是一个流媒体视频,所以将视频重新启动到相同的位置是行不通的,会有太大的延迟。

编辑:尽管人们建议多个 VideoViews 不应该工作,但它们确实工作得很好,甚至重叠,至少在我的 Nexus S,ICS 4.0.3 上

编辑 2:实际上,不是很好,第二个视频有时会闪烁,但这没关系。第3和第4个视频不闪烁,有点奇怪

【问题讨论】:

  • 上次我检查过,多个VideoViews 根本不起作用。您可能希望花一些时间在各种硬件上对此进行测试,以确保您的方法可靠,然后再投入更多时间,如果您还没有这样做的话。
  • 在 Android 中,如果某项设备在一台设备上运行良好,那么它是否受支持并没有任何意义。如果您不按照记录信息进行(即使那样,那也绝对不是万无一失的),我会在 15 台设备上进行测试,然后我才认为某些东西可能会起作用。这只是 Android。

标签: android android-videoview z-order


【解决方案1】:

document 表示 SurfaceView 的 Z 顺序是在它们附加到窗口之前确定的,并且它们的顺序一旦附加就不会改变。由于VideoView的也是SurfaceView,所以我觉得是做不到的。

【讨论】:

    【解决方案2】:

    VideoViews使用SurfaceView,巫婆是Z-ordered windows,但是你不能有多个SurfaceView z-ordered,因为每个SurfaceView都会在windows上打一个洞。如果在同一区域添加多个视频,视频将无法正常播放。我曾经将视频从屏幕上翻译出来以保持其状态。在 google play 上寻找 EcoNews aap。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-16
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 2014-03-23
      相关资源
      最近更新 更多