AnyChat技术支持论坛

标题: 处理Android下AnyChat支持横竖屏中遇到的bug [打印本页]

作者: 头大    时间: 2014-8-12 19:43
标题: 处理Android下AnyChat支持横竖屏中遇到的bug
剧情铺垫首先申明,我是一个Android初学者。最开始我们想做一个视频通话软件,很快就找到了AnyChat。但当时用的是官网的demo,只支持横屏。我们想做成下面这个效果:
横屏

竖屏


遇到的问题
1、自己的视频会被对方的视频挡住
2、自己的视频横竖比例不对



3、自己的视频将音量条挡住
4、自己的视频不能居中

问题1的处理
尝试1:由于较熟悉web方面的知识,最先想到用z-index控制View的叠放,结果悲剧的没找到z-index类似物
尝试2:Android中,xml排在后的会覆盖排在前的,但这么做不起作用
尝试3:SurfaceView是一种特殊的View,默认下会显示在普通View后,通过 myView.setZOrderOnTop(true); 可设置SurfaceView到顶层
问题解决!


问题2的处理
这个相对简单,直接贴代码:
private void adjuestVideoSize(int width, int height, Configuration config) {
            ConfigEntity configEntity = ConfigService.LoadConfig(this);
            float rWidth = configEntity.resolution_width;
            float rHeight = configEntity.resolution_height;
            if(config.orientation == Configuration.ORIENTATION_PORTRAIT) {
                    rWidth = configEntity.resolution_height;
                rHeight = configEntity.resolution_width;
            }
        if (rHeight * width > rWidth * height) {
                dwLocalVideoHeight = height;
                dwLocalVideoWidth = (int)(rWidth / rHeight * dwLocalVideoHeight);
        } else {
                dwLocalVideoWidth = width;
                dwLocalVideoHeight = (int)(rHeight / rWidth * dwLocalVideoWidth);
        }
        FrameLayout.LayoutParams layoutParamSelf=new FrameLayout.LayoutParams(dwLocalVideoWidth, dwLocalVideoHeight);
        myView.setLayoutParams(layoutParamSelf);
}

Android设备配置信息都放在ConfigEntity这个类中,包括摄像头的分辨率


问题3的处理
处理完第一个问题后,音量条被SurfaceView挡住了,这是由于UI布局的问题
只要设置SurfaceView外的FrameLayout
android:layout_height="0dip"
android:layout_weight=“1"
说明:weight指的是剩余空间的权重,所以FrameLayout的高度是0+剩余部分的100%,就不会覆盖音量条的部分



问题4的处理
SurfaceView外部的FrameLayout设置属性:android:layout_gravity="center"
但每次都是左上角对齐


实际是在执行下面这句时改变了对齐方式
FrameLayout.LayoutParams layoutParamSelf=new FrameLayout.LayoutParams(dwLocalVideoWidth, dwLocalVideoHeight);


加个参数就OK了,Gravity.CENTER
FrameLayout.LayoutParams layoutParamSelf=new FrameLayout.LayoutParams(dwLocalVideoWidth, dwLocalVideoHeight, Gravity.CENTER);


鸣谢
最后感谢AnyChat的开发人员,在我处理问题的过程中帮了很大的忙

作者: 头大    时间: 2014-8-12 19:53
图片貌似上传不了大概是这样的
横屏
________________
|            |             |
|            |             |
|            |             |
|_______|_______|

竖屏
____________
|                   |
|                   |
|           ____ |
|          |        |
|          |        |
|______|____|

作者: admin    时间: 2014-8-12 22:30
您好,另外一个示例程序:AnyChatCallCenter是支持屏幕切换的,是否可以满足您的需求?
您重新编辑一下帖子,就可以上传图片了,谢谢!





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