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