底部虚拟导航栏适配问题

问题
安卓机型太多适配比较麻烦,这里来讲讲部分手机有的底部虚拟导航按钮适配问题,我遇到有虚拟底部导航栏的手机就有:华为,索尼,OPPO……。
底部导航栏适配需要解决的以下几个问题:

  1. 哪些机型有底部虚拟导航栏;
  2. 底部导航栏的高度是多少;
  3. 针对有底部导航对布局高度进行调整;

是否显示底部导航栏
SDK在版本17之后增加了一个获取Window显示区域分辨率和实际分辨率大小的两个方法:

 Display display = act.getWindowManager().getDefaultDisplay();
 display.getSize(size);
 display.getRealSize(realSize);  

realSize.y其实包含了虚拟导航栏的高度,如果两个size的y坐标不想等,那么就说明有虚拟底部导航栏。
在低版本里面我们就只能通过,设备是否有永久菜单或者有返回键来判断,如果在设备上有了物理返回按钮或菜单就不需要再添加虚拟的导航栏,如果两个都有,那么这个手机厂商估计也倒闭了,直接代码:

boolean menu = ViewConfiguration.get(act).hasPermanentMenuKey();
boolean back = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);

只要menu或者back有一个就表示有物理导航栏,没有虚拟底部导航栏了。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值