美文网首页
getWindowVisibleDisplayFrame与get

getWindowVisibleDisplayFrame与get

作者: 呵呵哒hhhh | 来源:发表于2018-12-07 19:51 被阅读0次

    1、找到这两个数据

    1)Rect outRect= new Rect();

       h1= ((Activity) mContext).getWindow().getDecorView().getWindowVisibleDisplayFrame(r); 称为WindowVisibleDisplayFrame

    2)h2=((Activity) mContext).getWindowManager().getDefaultDisplay().getHeight();称为DefaultDisplay()

       outRect.top -> 可视区域顶部的坐标  (也就是状态栏的高度)

       outRect.bottom -> 可视区域底部的坐标  (屏幕高度-导航栏-键盘的高度)

    通过demo打log,得出h1和h2:

    透明状态栏                      h1=h2=1812     

    非透明状态栏                  h1=h2=1812

    无状态栏(竖屏全屏)   h1=h2=1812

    有导航栏                        h1=h2=1812

    无导航栏                        h1=h2=1920

    有键盘的情况下             h1=1015,h2=1812

    综上所述,WindowVisibleDisplayFrame和DefaultDisplay()的测量都包括状态栏但不包括导航栏。二者在键盘弹出的时候是不同的。

    查看源码中的解释:

    1、WindowVisibleDisplayFrame:

         *检索此视图所连接的窗口所在的整体可见显示大小。这考虑了窗口上方的屏幕装饰,适用于窗口本身位于其中或窗口正在放置的情况下

         *然后,覆盖的插图用于窗口将其内容定位在其中。实际上,这会告诉您可以放置​​内容并保持用户可见的可用区域。

    2、DefaultDisplay()

    DefaultDisplay()源码解释

     *默认显示ID,即内置主显示的id,假设有一个。

    也就是与上面的实验一致。我英文不好,凑合看吧。有啥适配问题,及时更新。

    相关文章

      网友评论

          本文标题:getWindowVisibleDisplayFrame与get

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