美文网首页
有虚拟导航键的情况下获取屏幕高度

有虚拟导航键的情况下获取屏幕高度

作者: 伍迪 | 来源:发表于2018-08-03 18:46 被阅读0次

    现在大部分的手机都没有底部虚拟导航键了,但是还是有些手机厂商依然在发布带虚拟导航键的手机,既然有,开发者就得去适配,我遇到比较麻烦的一个问题是获取屏幕(除了虚拟导航键以外的内容显示区域)高度(content),当时想着监听导航键的显示\隐藏。但是没有找到有效的方法。只能转变思路,通过获取content的高度来判断是否有导航键,然后根据content的高度变化来动态计算某些控件的高度。

    在此说明一下,通过以下方法在带导航键的手机上是有缺陷的,导航键显示\隐藏获取的高度是不会跟着变化的。

    下面贴上我的实现方法:

    View decorView = getWindow().getDecorView();

    Rect rect =new Rect();

    decorView.getWindowVisibleDisplayFrame(rect);

    rect.bottom就是content的高度。

    通过下面的方法可以获取是否有导航键,包括横屏模式的获取,其中point获取的高度不会随导航键的隐藏显示发生改变,比如1920*1080的手机,point.y永远都是1920,但上面的dm.heightPixels获取的是1920减去导航栏的高度,如果在当前页面把导航栏隐藏了,获取的还是1920减去导航栏的高度,关闭页面再打开获取的就会是1920了,所以说上面的方法有缺陷

    decorView的使用还是很有用很强大的。  

    相关文章

      网友评论

          本文标题:有虚拟导航键的情况下获取屏幕高度

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