android 键盘表情流畅切换

大家都用微信,在聊天页面,软键盘与表情栏,工具栏之间的切换非常流畅,没有引起输入bar的上下抖动,体验非常好。这里讲一讲它的实现原理。

将表情栏的高度设置为与软键盘一样。

这里略微绕一点,因为android没有提供API,但是方案早已泛滥,基本思路一致:
1. 在AndroidManifest.xml中设置Activity属性 adjustResize
2. 代码中,注册GlobalLayoutListener,获取软键盘高度,设置表情栏,输入栏高度。
这里就不提供代码了,一搜一堆。

页面顶层View高度设成具体值

仅仅将表情栏高度设置成与软件盘一样高时不够的,如在软键盘切换表情时就会出现输入条被高高顶起再落下的动画,体验很不好。如何做到像微信那样切换时输入条高度不变呢?
- 在软键盘没有弹出时,将顶层页面高度从match_parent设成具体值
- 当软键盘弹出时,将表情栏的parentView(高度与软键盘一样)设置为显示。

这样,软键盘弹出时,window的高度是减少了,减少了软键盘的高度。但是由于Activity中顶层View的高度是定值,所以页面高度不变。窗口大小小于View大小,只能显示View的上半部分。此时显示表情栏ParentView,将输入条顶起,高度刚刚好。表情,软键盘之间切换时,输入条的位置根本就没有变,所以体验非常好。

RootView高度变化问题

这个高度具体值并不是一定不变的,如部分手机底部的虚拟导航条可以显示,可以隐藏。
- 监听GlobalLayoutListener,当RootView高度变化时,重新设置顶层View高度。

参考

一牛人写的巨NICE的实例,没有会比它更好的了!快来STAR吧!
https://github.com/cpoopc/SmoothEmotionKeyBoard

更多相关文章

  1. Android软键盘适配问题
  2. Android(安卓)EditText 设置行距不影响光标高度
  3. Android(安卓)EditText不弹出软键盘
  4. Android中获取屏幕相关信息(屏幕大小,状态栏、标题栏高度)
  5. 调出软键盘 挤掉标题栏咋办
  6. android中字符替换成表情
  7. 解决Android编辑框在全屏模式下无法检测布局变化的问题
  8. Android(安卓)软键盘相关辅助类KeyBoardUtils
  9. android强制弹出键盘

随机推荐

  1. Android网络请求库——android-async-htt
  2. FFMPEG移植到Android(ubuntu环境下)
  3. Unity功能记录(五)------ Android(安卓)stu
  4. Content Prodvider 类----实例:获取通讯录
  5. Google ZXing系列讲解(三)——ZXing 目录
  6. Android(安卓)Studio 中自带Android(安卓
  7. Android(安卓)广播的生命周期
  8. Android知识体系总结之Android部分之Inte
  9. Android中软键盘监听
  10. 用Kotlin写响应式编程RxAndroid