微信表情与输入法无缝切换(原理篇)

对于做过表情与输入法切换的就应该知道,它们之间正常切换的话会存在对话框掉下去的情况。如果不知道可以去对比易信的表情界面与输入法的切换,跟微信的表情界面与输入法切换的区别,明显效果不可同日而语。

废话不多说。来讲讲微信是怎么实现的,先看图

图片分为1与2两个区域,1区域我们称之为输入框区域,2区域称之为表情界面区域。那么像微信在输入法正常高度的情况下,切换表情界面与输入法,1区域完全高度保持不变。那么首先我们需要获取输入法的高度,我这里给出一种方法,就是输入法出现时,我们的界面会弹上去,那么原来的这个最外层rootview的高度与新的高度就是输入法的高度,可以通过rootView.getViewTreeObserver().addOnGlobalLayoutListener来监听改变

那么得到输入法的高度后,我们就可以根据高度来改变表情界面的高度跟布局了。接下来就只要保证区域1位置保持不变就可以了。比如现在处于上方的情况,表情界面存在,将要切换输入法界面。那么当输入法界面真正出来的时候,势必会改变rootview的高度,我们只需在右切换动作的情况下,去监听onMearsure()方法,输入法出现的时候,会重新来测量的。发现又出现一个输入法高度,就可以将表情界面隐藏了,设置为GONE。检测谁它测,测完它需要onLayout,设为GONE的onLayout不会占空间了。所以刚好与输入法那里补充,这边消失,那边出现。

ok,过程差不多就是这样,有机会展示代码。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值