surfaceview切换
同一个surfaceview,第一次是只在父布局A上显示,然后点击按钮切换到父布局B上显示。我现在是第一次从A到B没问题,但是第二次先从A remove以后再add surfaceview到B上时显示不出来,怎么做呢?
本帖最后由 佰锐科技-梁国桦 于 2016-8-1 09:35 编辑
您好,我们有一个切换本地与远程视频的demo,切换的原理是本地视频和远程视频先与surfaceview解绑,然后再交换绑定,从而实现本地视频和远程视频在位置上的交换(改变),如果您需要该demo,可以留下邮件地址,我给您发 佰锐科技-梁国桦 发表于 2016-8-1 09:33
您好,我们有一个切换本地与远程视频的demo,切换的原理是本地视频和远程视频先与surfaceview解绑,然后再 ...
现在已经实现了切换,但是surfaceview可以接受点击事件,却看不到它的图像,setZOrderOnTop(true)不起作用 rendersliver 发表于 2016-8-1 09:55
现在已经实现了切换,但是surfaceview可以接受点击事件,却看不到它的图像,setZOrderOnTop(true)不起作 ...
1)是已经有我们的切换远程本地视频的demo了吗?有的话,建议参考我们的demo
2)看不到图像是哪个surfaceview看不到?切换前还是切换后? 佰锐科技-梁国桦 发表于 2016-8-1 11:34
1)是已经有我们的切换远程本地视频的demo了吗?有的话,建议参考我们的demo
2)看不到图像是哪个surfac ...
切换后小窗口看不到了,但是在那个区域点一下发现显示出来了 rendersliver 发表于 2016-8-1 11:39
切换后小窗口看不到了,但是在那个区域点一下发现显示出来了
您的意思是:远程视频切换到小窗口时,小窗口看不见,再切换回来时就有了 ?
如果是这样,可能是漏了一次setZOrderOnTop(true); 要注意看清楚是哪个surfaceview需要调用这个噢,两个情况都不同的 rendersliver 发表于 2016-8-1 11:39
切换后小窗口看不到了,但是在那个区域点一下发现显示出来了
如果没漏的话,建议您检查下代码的顺序有没有问题,也可以直接复制我们demo的代码, 然后修改下对应的控件修改下变量名即可 佰锐科技-梁国桦 发表于 2016-8-1 14:18
如果没漏的话,建议您检查下代码的顺序有没有问题,也可以直接复制我们demo的代码, 然后修改下对应的控 ...
两个窗口都设置了确实都显示出来了,但是setZOrderOnTop这个不能用啊,会导致我大窗口上其他控件都看不见了 /** 用来切换的标识 */
private int tag = 0;
/** 此方法会交换两个位置的信息 */
private void changeSize() {
if (tag == 0) {
// 先取消绑定别人的画面
anychatSDK.mVideoHelper.UnBindVideo(index);
// 移出别人的画面
rlContainer.removeView(mOtherView);
mMyView.setLayoutParams(paramsBig);
mOtherView.setLayoutParams(paramsSmall);
mOtherView.setZOrderOnTop(true);
rlContainer.addView(mOtherView);
// 绑定别人的画面
index = anychatSDK.mVideoHelper.bindVideo(mOtherView.getHolder());
anychatSDK.mVideoHelper.SetVideoUser(index, userID);
tag = 1;
} else {
// 先取消绑定别人的画面
anychatSDK.mVideoHelper.UnBindVideo(index);
// 移出别的画面
rlContainer.removeView(mOtherView);
mMyView.setLayoutParams(paramsSmall);
mOtherView.setLayoutParams(paramsBig);
rlContainer.addView(mOtherView, -1);
mOtherView.setZOrderOnTop(false);
mOtherView.setZOrderMediaOverlay(false);
mMyView.setZOrderMediaOverlay(true);
mMyView.setZOrderOnTop(true);
// 绑定别人的画面
index = anychatSDK.mVideoHelper.bindVideo(mOtherView.getHolder());
anychatSDK.mVideoHelper.SetVideoUser(index, userID);
tag = 0;
}
}
您看看调用的顺序对吗? 谢谢耐心的解答。
最后曲折的解决问题了,没有使用setZOrderOnTop这个属性,使用addview和removeview实现了。
页:
[1]
2