AnyChat技术支持论坛

标题: surfaceview切换 [打印本页]

作者: rendersliver    时间: 2016-7-31 20:15
标题: surfaceview切换
同一个surfaceview,第一次是只在父布局A上显示,然后点击按钮切换到父布局B上显示。
我现在是第一次从A到B没问题,但是第二次先从A remove以后再add surfaceview到B上时显示不出来,怎么做呢?

作者: 佰锐科技-梁国桦    时间: 2016-8-1 09:33
本帖最后由 佰锐科技-梁国桦 于 2016-8-1 09:35 编辑

您好,我们有一个切换本地与远程视频的demo,切换的原理是本地视频和远程视频先与surfaceview解绑,然后再交换绑定,从而实现本地视频和远程视频在位置上的交换(改变),如果您需要该demo,可以留下邮件地址,我给您发
作者: rendersliver    时间: 2016-8-1 09:55
佰锐科技-梁国桦 发表于 2016-8-1 09:33
您好,我们有一个切换本地与远程视频的demo,切换的原理是本地视频和远程视频先与surfaceview解绑,然后再 ...

现在已经实现了切换,但是surfaceview可以接受点击事件,却看不到它的图像,setZOrderOnTop(true)不起作用
作者: 佰锐科技-梁国桦    时间: 2016-8-1 11:34
rendersliver 发表于 2016-8-1 09:55
现在已经实现了切换,但是surfaceview可以接受点击事件,却看不到它的图像,setZOrderOnTop(true)不起作 ...

1)是已经有我们的切换远程本地视频的demo了吗?有的话,建议参考我们的demo
2)看不到图像是哪个surfaceview看不到?切换前还是切换后?
作者: rendersliver    时间: 2016-8-1 11:39
佰锐科技-梁国桦 发表于 2016-8-1 11:34
1)是已经有我们的切换远程本地视频的demo了吗?有的话,建议参考我们的demo
2)看不到图像是哪个surfac ...

切换后小窗口看不到了,但是在那个区域点一下发现显示出来了
作者: 佰锐科技-梁国桦    时间: 2016-8-1 13:53
rendersliver 发表于 2016-8-1 11:39
切换后小窗口看不到了,但是在那个区域点一下发现显示出来了

您的意思是:远程视频切换到小窗口时,小窗口看不见,再切换回来时就有了 ?
如果是这样,可能是漏了一次setZOrderOnTop(true); 要注意看清楚是哪个surfaceview需要调用这个噢,两个情况都不同的
作者: 佰锐科技-梁国桦    时间: 2016-8-1 14:18
rendersliver 发表于 2016-8-1 11:39
切换后小窗口看不到了,但是在那个区域点一下发现显示出来了

如果没漏的话,建议您检查下代码的顺序有没有问题,也可以直接复制我们demo的代码, 然后修改下对应的控件修改下变量名即可
作者: rendersliver    时间: 2016-8-6 21:06
佰锐科技-梁国桦 发表于 2016-8-1 14:18
如果没漏的话,建议您检查下代码的顺序有没有问题,也可以直接复制我们demo的代码, 然后修改下对应的控 ...

两个窗口都设置了确实都显示出来了,但是setZOrderOnTop这个不能用啊,会导致我大窗口上其他控件都看不见了
作者: 佰锐科技-梁国桦    时间: 2016-8-8 09:09
        /** 用来切换的标识 */
        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;
                }
        }

您看看调用的顺序对吗?
作者: rendersliver    时间: 2016-8-22 14:16
谢谢耐心的解答。
最后曲折的解决问题了,没有使用setZOrderOnTop这个属性,使用addview和removeview实现了。
作者: 1807079169    时间: 2017-7-9 23:03
佰锐科技-梁国桦 发表于 2016-8-1 09:33
您好,我们有一个切换本地与远程视频的demo,切换的原理是本地视频和远程视频先与surfaceview解绑,然后再 ...

你好,我们也需要实现本地和远程界面的切换,可否将demo发于我的邮箱呢?yfxhao123@163.com,谢谢。。
作者: 一只大象    时间: 2017-10-31 16:29
佰锐科技-梁国桦 发表于 2016-8-1 09:33
您好,我们有一个切换本地与远程视频的demo,切换的原理是本地视频和远程视频先与surfaceview解绑,然后再 ...

您好,请把视频远程和本地切换的demo发一份,谢谢;yuefx0518@cairenhui.com
作者: dandan    时间: 2017-11-23 10:12
谢谢,我也需要一份视频远程和本地切换的demo,非常感谢;614999725@qq.com
作者: ckdream001    时间: 2017-12-12 14:07
佰锐科技-梁国桦 发表于 2016-8-1 09:33
您好,我们有一个切换本地与远程视频的demo,切换的原理是本地视频和远程视频先与surfaceview解绑,然后再 ...

您好,请把视频远程和本地切换的demo发一份,谢谢;785338419@qq.com




欢迎光临 AnyChat技术支持论坛 (http://bbs.anychat.cn/) Powered by Discuz! X3