美文网首页
直播视频小窗口完美适配

直播视频小窗口完美适配

作者: fyg | 来源:发表于2020-07-14 00:43 被阅读0次

    产品需求是: 视频小窗口要占当前窗口的 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)

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

    Android 获取屏幕宽度和高度的几种方法

    Android--›状态栏高度,导航栏高度,Window高度,DecorView高度,heightPixels

    【Android】判断当前手机是否有虚拟按键

    关注我的github

    https://github.com/fuyuguang
    带你了解更多项目实践中的bug

    相关文章

      网友评论

          本文标题:直播视频小窗口完美适配

          本文链接:https://www.haomeiwen.com/subject/pgsthktx.html