设为首页收藏本站

AnyChat技术支持论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 4397|回复: 13

surfaceview切换

[复制链接]

4

主题

17

帖子

70

积分

注册会员

Rank: 2

积分
70
发表于 2016-7-31 20:15:51 | 显示全部楼层 |阅读模式
同一个surfaceview,第一次是只在父布局A上显示,然后点击按钮切换到父布局B上显示。
我现在是第一次从A到B没问题,但是第二次先从A remove以后再add surfaceview到B上时显示不出来,怎么做呢?
回复

使用道具 举报

发表于 2016-8-1 09:33:43 | 显示全部楼层
本帖最后由 佰锐科技-梁国桦 于 2016-8-1 09:35 编辑

您好,我们有一个切换本地与远程视频的demo,切换的原理是本地视频和远程视频先与surfaceview解绑,然后再交换绑定,从而实现本地视频和远程视频在位置上的交换(改变),如果您需要该demo,可以留下邮件地址,我给您发
回复 支持 反对

使用道具 举报

4

主题

17

帖子

70

积分

注册会员

Rank: 2

积分
70
 楼主| 发表于 2016-8-1 09:55:08 | 显示全部楼层
佰锐科技-梁国桦 发表于 2016-8-1 09:33
您好,我们有一个切换本地与远程视频的demo,切换的原理是本地视频和远程视频先与surfaceview解绑,然后再 ...

现在已经实现了切换,但是surfaceview可以接受点击事件,却看不到它的图像,setZOrderOnTop(true)不起作用
回复 支持 反对

使用道具 举报

发表于 2016-8-1 11:34:21 | 显示全部楼层
rendersliver 发表于 2016-8-1 09:55
现在已经实现了切换,但是surfaceview可以接受点击事件,却看不到它的图像,setZOrderOnTop(true)不起作 ...

1)是已经有我们的切换远程本地视频的demo了吗?有的话,建议参考我们的demo
2)看不到图像是哪个surfaceview看不到?切换前还是切换后?
回复 支持 反对

使用道具 举报

4

主题

17

帖子

70

积分

注册会员

Rank: 2

积分
70
 楼主| 发表于 2016-8-1 11:39:37 | 显示全部楼层
佰锐科技-梁国桦 发表于 2016-8-1 11:34
1)是已经有我们的切换远程本地视频的demo了吗?有的话,建议参考我们的demo
2)看不到图像是哪个surfac ...

切换后小窗口看不到了,但是在那个区域点一下发现显示出来了
回复 支持 反对

使用道具 举报

发表于 2016-8-1 13:53:53 | 显示全部楼层
rendersliver 发表于 2016-8-1 11:39
切换后小窗口看不到了,但是在那个区域点一下发现显示出来了

您的意思是:远程视频切换到小窗口时,小窗口看不见,再切换回来时就有了 ?
如果是这样,可能是漏了一次setZOrderOnTop(true); 要注意看清楚是哪个surfaceview需要调用这个噢,两个情况都不同的
回复 支持 反对

使用道具 举报

发表于 2016-8-1 14:18:08 | 显示全部楼层
rendersliver 发表于 2016-8-1 11:39
切换后小窗口看不到了,但是在那个区域点一下发现显示出来了

如果没漏的话,建议您检查下代码的顺序有没有问题,也可以直接复制我们demo的代码, 然后修改下对应的控件修改下变量名即可
回复 支持 反对

使用道具 举报

4

主题

17

帖子

70

积分

注册会员

Rank: 2

积分
70
 楼主| 发表于 2016-8-6 21:06:04 | 显示全部楼层
佰锐科技-梁国桦 发表于 2016-8-1 14:18
如果没漏的话,建议您检查下代码的顺序有没有问题,也可以直接复制我们demo的代码, 然后修改下对应的控 ...

两个窗口都设置了确实都显示出来了,但是setZOrderOnTop这个不能用啊,会导致我大窗口上其他控件都看不见了
回复 支持 反对

使用道具 举报

发表于 2016-8-8 09:09:17 | 显示全部楼层
        /** 用来切换的标识 */
        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;
                }
        }

您看看调用的顺序对吗?
回复 支持 反对

使用道具 举报

4

主题

17

帖子

70

积分

注册会员

Rank: 2

积分
70
 楼主| 发表于 2016-8-22 14:16:23 | 显示全部楼层
谢谢耐心的解答。
最后曲折的解决问题了,没有使用setZOrderOnTop这个属性,使用addview和removeview实现了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|AnyChat ( 粤ICP备13022410号-1 )  

GMT+8, 2020-4-9 21:45 , Processed in 0.349387 second(s), 22 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表