android直播技术小窗口,直播视频小窗口完美适配

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

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

a1977b07adf0

视频小窗口问题1.jpeg

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

a1977b07adf0

视频小窗口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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值