Java GridLayout SurfaceView子项在更改其可见性时相互重叠
我有一个名为Java GridLayout SurfaceView子项在更改其可见性时相互重叠,java,android,surfaceview,grid-layout,android-gridlayout,Java,Android,Surfaceview,Grid Layout,Android Gridlayout,我有一个名为ScreensaActivity的活动,该活动包含一个GridLayout 每个GridLayout子项都是一个名为ScreenView的自定义视图 ScreenView由一个SurfaceView组成,用于播放.MP4文件中的视频 这是上述组件的视图层次结构: ScreensActivity GridLayout ScreenView ScreenView ScreenView ScreenView
ScreensaActivity
的活动,该活动包含一个GridLayout
每个GridLayout
子项都是一个名为ScreenView
的自定义视图
ScreenView
由一个SurfaceView
组成,用于播放.MP4文件中的视频
这是上述组件的视图层次结构:
ScreensActivity
GridLayout
ScreenView
ScreenView
ScreenView
ScreenView
...
预期行为
我想做的是添加对将GridLayout
中ScreenView
的“状态”更改为“全屏”的支持,方法是消失ScreenView的其余部分(使用setVisibility(GONE)
),这样它将填充整个GridLayout
一次只能有一个ScreenView
处于“全屏状态”
当前行为
目前,这仅在尝试更改网格布局
中第一个屏幕视图
的“状态”(这是预期行为)时起作用
当试图从第二个屏幕视图等更改“状态”时,我遇到以下奇怪的行为(请参见下面示例的):
将屏幕视图
的“状态”更改为“全屏”时,它被其他屏幕视图覆盖,例如:
- 当将第二个
屏幕视图
的“状态”更改为“全屏”时,第一个屏幕视图
覆盖了他
- 当将第三个
屏幕视图
的“状态”更改为“全屏”时,第一个和第二个“屏幕”都覆盖了他,依此类推
- 依此类推,直到将第9个
屏幕视图
的“状态”更改为“全屏”,之前所有的屏幕视图
都覆盖了他
重要提示
当我用TextView
替换SurfaceView
(在ScreenView
中)时,例如,将ScreenView
的“状态”更改为“全屏”“按预期执行,因此产生这种奇怪行为的问题组件似乎是SurfaceView
,ScreenView
由它组成
让我知道,如果添加源代码将帮助您解决我的问题
非常感谢您的帮助。我通过将SurfaceView
替换为一个行为完全符合我预期的方式来解决问题。我通过将SurfaceView
替换为一个行为完全符合我预期的方式来解决问题。您最好改变方法,SurfaceView不同于普通视图,事实上,它们就像一个被底层本机代码填满的“洞”。如果使用多个SurfaceView、重叠的SurfaceView等,您可能会发现各种各样的工件,甚至不同的accross设备。。。另外,您的应用程序将消耗大量资源。@rupps那么您有什么建议?我不知道该建议什么,因为您可能面临低级别手机视频驱动程序的限制。我建议你试试其他设备。如果你看到不同的行为(我打赌你会),我会放弃这个想法,尝试只使用一个surfaceview(活动视频播放),并将其余的更改为图像。此外,您可以尝试将假定隐藏的SurfaceView移出屏幕(因为Visibility.Goe与视图中与真实曲面不同步的“正常”部分相关)。您最好改变方法,SurfaceView与正常视图不同,事实上,它们就像一个“洞”,被底层本机代码填满。如果使用多个SurfaceView、重叠的SurfaceView等,您可能会发现各种各样的工件,甚至不同的accross设备。。。另外,您的应用程序将消耗大量资源。@rupps那么您有什么建议?我不知道该建议什么,因为您可能面临低级别手机视频驱动程序的限制。我建议你试试其他设备。如果你看到不同的行为(我打赌你会),我会放弃这个想法,尝试只使用一个surfaceview(活动视频播放),并将其余的更改为图像。此外,您还可以尝试将假定隐藏的SurfaceView移出屏幕(因为Visibility.Goe与视图中与真实曲面不同步的“正常”部分相关)