Android监听虚拟导航栏状态变化,并自动更新屏幕显示区域尺寸

本文详细介绍了如何在Android中监听虚拟导航栏的状态变化,并根据其变化自动更新屏幕显示区域的尺寸,以解决因导航栏隐藏或显示导致的界面问题。通过实现OnGlobalLayoutListener接口,监听View的布局变化,并调整界面布局以适应不同导航栏状态。
摘要由CSDN通过智能技术生成

1、问题描述

虚拟导航栏
上图为手机的虚拟导航栏,手机开启了虚拟导航栏可隐藏功能后,当虚拟导航栏的显示状态发生变化时,屏幕的Width和Height的值(除去虚拟导航栏部分)也会发生变化。此时,如果程序中同时使用了绘图和切图,那么切换状态后,二者的相对位置可能出现偏差,影响界面效果,甚至影响程序的正常功能。

2、解决思路

我们希望当虚拟导航栏的状态发生改变时,自动获取屏幕用于显示区域(除去导航栏)最新的尺寸信息,并刷新界面。
当View的宽高发生了变化,不再适合现在的区域,系统会调用requestLayout方法重新对View布局。onGloableLayout实现了OnGlobalLayoutListener接口,可以监听View宽高的变化。流程图如下图所示(虚拟导航栏缩写为VB,virtual bar):

Created with Raphaël 2.2.0 开始 onGloableLayout
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值