产品需求是: 视频小窗口要占当前窗口的 1/3 , 商品列表占 2/3

之前测试提到直播视频小窗口和购物袋在某些机型上会有间隔问题,如下图

视频小窗口问题1.jpeg

正常情况下的显示效果如下图:

视频小窗口2.png

出现该问题的原因是因为:

1 ,某些机型底部有虚拟物理键,

2 ,某些手机是全面屏无虚拟物理键,但用代码判断是否有无虚拟物理键和 虚拟物理键高度时有兼容性问题所致 。

正常思路为:

屏幕的总高度为: 状态栏 + View的显示区域 + 虚拟键盘的高度

(状态栏,由于在我们app中始终显示,故忽略)

由于android设备总多,获取虚拟按键是否显示,及高度的方法 ,不通用,有 兼容性,,这种方式经实践,不可行。

非正常思路为:

由于当前界面【View的显示区域】(视频小窗口区域+商品列表区域)在每个手机上是固定的,我们可以可以在代码中 计算【View的显示区域】,由于当前界面是一个dialog 在setContentView后,界面布局,测量还未完成,获取【View的显示区域】高度是获取不到的,所以,需要使用View.post 【最好用handler.post,它们有是区别的!!!不然会不执行】或如下方法,等界面油量完后,在获取高度,进行缩放显示。

public static void addOnGlobalLayoutListener(final View view, final Runnable runnable) {

if (view == null || runnable == null) {

return;

}

ViewTreeObserver vto = view.getViewTreeObserver();

vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

@SuppressWarnings("deprecation")

@Override

public void onGlobalLayout() {

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {

view.getViewTreeObserver().removeGlobalOnLayoutListener(this);

} else {

view.getViewTreeObserver().removeOnGlobalLayoutListener(this);

}

if (runnable != null) {

runnable.run();

}

}

});

}

注意点:

1 ,缩放整个直播页面【View的显示区域】高度为原来的 1/3

2,设置dialog中商品列表的高度为 【View的显示区域】的 2/3 ,dialog上半部分为透明的,触摸可关闭当前dialog.

3,设置缩放View的中心点为 (【View显示区域】的宽/2,0)

如下方式经测试有兼容性问题,请忽略

关注我的github

android直播技术小窗口,直播视频小窗口完美适配相关推荐

  1. 映客直播技术实战:直播平台的数据库架构演变

    摘要:8月24日,阿里云数据库技术峰会到来,本次技术峰会邀请到了阿里集团和阿里云数据库老司机们,为大家分享了一线数据库实践经验和技术干货.在本次峰会上,特邀嘉宾映客直播架构师王振涛分享了映客直播作为创 ...

  2. 手游录屏直播技术详解 | 直播 SDK 性能优化实践

    直播无疑是 2016 年的大热话题,七牛云在 6 月底发布了实时流网络 LiveNet 和直播云解决方案后,我们用<直播技术详解>系列文章系统地介绍了直播各个环节的关键技术,帮助视频直播创 ...

  3. JAVA微信小程序共享视频小程序系统毕业设计 开题报告

    本文给出的java微信小程序系统毕业设计开题报告,仅供参考!(具体模板和要求按照自己学校给的要求修改) 选题目的和意义 目的:本课题主要目标是设计并能够实现一个基于微信小程序视频分享系统,前台用户使用 ...

  4. iOS直播技术学习笔记 直播总体概览(一)

    ####概述 直播的现状 2016年,是一个直播年.直播行业快速发展,同时也滋生了大大小小上千家相关的公司. 中国互联网络信息中心发布的报告显示,截至今年6月,我国网络直播用户规模达到3.25亿,占网 ...

  5. taro 请务必在小程序页面中完善页面基础信息_小程序自定义导航栏(完美适配所有手机)...

    背景 在做小程序时,关于默认导航栏,我们遇到了以下的问题: Android.IOS手机对于页面title的展示不一致,安卓title的显示不居中 页面的title只支持纯文本级别的样式控制,不能够做更 ...

  6. 微信小程序自定义导航栏组件,完美适配所有手机,可实现各种功能和情况

    背景 在做小程序时,关于默认导航栏,我们遇到了以下的问题: Android.IOS手机对于页面title的展示不一致,安卓title的显示不居中 页面的title只支持纯文本级别的样式控制,不能够做更 ...

  7. 小程序自定义导航栏(完美适配所有手机)解决上下不居中 左右不对齐 高度不协调问题...

    背景 在做小程序时,关于默认导航栏,我们遇到了以下的问题: Android.IOS手机对于页面title的展示不一致,安卓title的显示不居中 页面的title只支持纯文本级别的样式控制,不能够做更 ...

  8. 微信小程序自定义导航栏组件(完美适配所有手机),可自定义实现任何你想要的功能

    背景 在做小程序时,关于默认导航栏,我们遇到了以下的问题: Android.IOS 手机对于页面 title 的展示不一致,安卓 title 的显示不居中 页面的 title 只支持纯文本级别的样式控 ...

  9. ios直播技术(1)-- 视频采集

    自己封装了一个视频采集类. 1.支持动态修改前后置摄像头. 2.支持分辨率.帧率修改,当设置不支持的分辨率时自动匹配最相近的分辨率. 3.视频预览功能 VideoCapture.h // // Vid ...

  10. 快手小程序开发视频试看功能完美实现,正在纠结的你看过来

    快手小程序实现的视频试看功能 最近在做快手小程序的研发工作,在一个知识付费的项目中需要开发视频课件试看功能.快手小程序是有很多隐藏bug的要是没有bug的话这个功能很简单就可以实现,然而他是有bug, ...

最新文章

  1. 你只使用到了 VS Code 20% 的功能?让 VS Code 首著作者带你玩转 VS Code!
  2. HBase-Shell-数据结构-原理
  3. 老婆,我会好好爱你的
  4. The 2007 Microsoft Office System RTM is ready to rock !
  5. java解压文件、复制文件、删除文件代码示例
  6. Leetcode 1109.航班预定统计 差分
  7. Linux 如何安装程序的源代码软件包/源码程序包/源码包?
  8. Oracle 10g新特性
  9. java 图像处理两例:图像缩放与圆角图片的制作
  10. zoom怎么解除静音_如何召开一场Zoom视频会议
  11. Jenkins 升级到2.42 Junit test report 出现错误的解决
  12. HSPICE MOS模型
  13. Palantir分析:「商业模式画布」、「SWOT」、「垄断特征」、以及「7个商业模式」
  14. 计算机组成原理分部实验,《计算机组成原理》课程建设的一点思考参考.pdf
  15. js获取对象的方法,根据id、根据name、根据标签名、根据类名
  16. 单机Eureka构建步骤
  17. Java试用两个月,我快被劝退了
  18. 使用NanoHttpd在Android上实现HttpServer
  19. git lfs的安装和使用
  20. flutter/dart通过ffi调用rust代码

热门文章

  1. windows下编译dtkwidget
  2. 吴恩达.深度学习系列-C1神经网络与深度学习-W1介绍
  3. (摘要)100个伟大的商业理念:理念10:顾客心理分析
  4. 【转】MIUI8以及ViVO X9上在Android Studio运行出错集及其解决方案
  5. 三维建模----相机参数
  6. 从DesperateCat学到的Tomcat下的新利用思路
  7. 从70年兴衰史里看见AI的未来
  8. 读jQuery Blog之Greybox Redux
  9. 零基础初学者学PLC的几个建议。
  10. ROS系列——mavros功能包中常用话题和服务介绍,包括消息名称、类型、头文件、成员变量、示例代码