Android悬浮球软键盘避让功能实现

 最近公司项目需要写一个悬浮球,其中有个功能是键盘避让想了很久(踩了很多坑)- -!,记录下来,供大家参考。

首先网上的一些实现并不管用。

比如监听布局高度的变化,只能在应用内实现,全局并不能监听的到。

还有的是使用Notifacation监听输入法变化来实现,这个方法要求有点苛刻,要求手机必须安装俩个以上的输入法。(而且在原生系统貌似也没啥用)

Android也没有提供特定的API监听软键盘弹出关闭。

由于是公司自己做Rom,所以可以从源码层级考虑,修改Framework相关代码来实现,撸了一遍输入法相关的源码。发现InputmethodManagerService中有两个方法showSoftInput 和hideSoftInput 于是打开Log试了一下,发现可以在这两个方法中监听键盘打开和关闭。发两个广播就可以了。


Android悬浮球软键盘避让功能实现_第1张图片


Android悬浮球软键盘避让功能实现_第2张图片

接收到广播,在项目中接收广播,修改悬浮球位置即可。


Android悬浮球软键盘避让功能实现_第3张图片

你可能感兴趣的:(Android悬浮球软键盘避让功能实现)