VideoPlayer 如何在Android平台改变显示层级

发帖之前已进行查找,未能解决(比较笨)

描述 :

cocos creator 使用videoPlayer播放视频,其中需要在视频左上角增加"跳过"按钮

后经测试发现,跳过按钮始终被videoPlayer遮盖

分析Android代码发现 VideoPlayer在Android上实现为videoView
videoView是一个新的surfaceView .通过 setZOrderOnTop(true); 被设置为当前层级最顶层.覆盖到cocosSurfaceView


如果videoView不调用这个api设置为最顶层 , 则会被游戏的surfaceView遮盖.

目前想法是注释 setZOrderOnTop(true);
这样videoView就会被遮盖
然后找到游戏的surfaceView,把他设置为透明.

理想表现状态
上层是 ui控件 如 Label,sprite
下层为 videoView 播放视频.
下层事件会被上层事件拦截

实际变现为:
上层ui展示完整
下层videoView播放
中间不知道什么东西黑色的(我估计是videoView添加了一层,可我找不到)
视频还在播放.只能听声音,视频被中间黑色的一层遮挡

其中修改 :

修改cocos2dxActivity.java
this.mGLSurfaceView.setAlpha(0.0f);

修改Cocos2dxVideoHelper.java
注释 videoView.setZOrderOnTop(true);

问题:

如何把黑色的那一层给透明掉?,体现为理想变现状态.能够看到视频?

设置 setAlpha 就可以了 您的引擎版本是? 我这边也遇到了这个问题 设置videoPlayer层级 然后下面黑屏的问题

大佬们解决了吗?同样的需求,同样的问题。我把视频直接放到了安卓端去播放真机没得问题,但是模拟器上不知道被什么东西挡住了。

感谢大佬的帖子为我提供了灵感,我试了 setAlpha没用但是我尝试了setVisibility 是阔以隐藏掉mGLSurfaceView 那层黑色xx :joy:


引擎有提供API,两年前我忘来埋了

1赞

如果是web平台也可以更改原生元素的透明度
//设置body透明度
function aha_body_alpha(alpha) {
if (alpha) {
document.getElementsByTagName(‘body’)[0].setAttribute(‘style’, ‘background: transparent’);
document.getElementById(‘GameCanvas’).setAttribute(‘class’, ‘canvas_alpha_true’);
} else {
document.getElementsByTagName(‘body’)[0].setAttribute(‘style’, ‘’);
document.getElementById(‘GameCanvas’).setAttribute(‘class’, ‘canvas_alpha_false’);
}
}

// css
.canvas_alpha_true {
background-color: rgba(0, 0, 0, 0);
}

.canvas_alpha_false {
background-color: rgba(0, 0, 0, 255);
}

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。