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

android键盘表情流畅切换实现相关推荐

  1. android 调出键盘表情_Android 软键盘和emoji表情切换方案,和微信几乎一样的体验...

    注意:本项目还有一个小坑.第一次进去的时候有时候输入框没有得到焦点,没有弹出软键盘,所以不能更好的量取软键盘高度,给了一个默认值787 软键盘默认高度.所以可以忽略不计,一旦弹出了软键盘,这个高度就被 ...

  2. Android 软键盘丝滑切换(一)

    在开发app中,软键盘弹出会有卡顿,闪一下的现象,会影响体验效果.为了实现微信软键盘与表情面板流畅的切换效果,查看了好多例子,查阅的很多资料,换了几种实现方式,都达不到流畅切换的效果,最终结合资料,参 ...

  3. android 调出键盘表情_android高仿微信表情输入与键盘输入代码(详细实现分析)

    表情与键盘的切换输入大部分IM都会需要到,之前自己实现了一个,还是存在些缺陷,比如说键盘与表情切换时出现跳闪问题,这个困扰了我些时间,不过所幸在Github(其代码整体结构很不错)并且在论坛上找些解决 ...

  4. Android键盘切换闪动原理及解决方案

    Android键盘切换闪动原理及解决方案 主要内容 键盘切换闪动原理 键盘切换闪动解决方案 设置键盘softInputMode使用adjustPan,增加一个与键盘同高的支撑视图(不推荐) 设置键盘s ...

  5. android使用Vitamio实现视频播放大小屏流畅切换

    之前在自己的一个项目中用到过视频播放,今天抽空把遇到的坑都写下来,顺便给将要用到的朋友提个醒. 首先说下开源的视频播放框架有好几个,我这里主要讲我用到的这个,那就是Vitamio.有关vitamio的 ...

  6. android 上键,在Android键盘上设置Return键

    有没有人友好的编码器知道如何更改Android键盘的返回键上的文本.我正在捕获EditText元素的return事件以启动操​​作.所以我想向用户显示他可以用该键启动操作.一些应用程序这样做.例如.他 ...

  7. android 自定义表情包,android基于环信的聊天和表情自定义

    环信sdk的导入 自定义聊天界面 此处只有静态图,请谅解. 自定义表情发送 自定义聊天界面 简单说下自定义的聊天界面,一个带有recyclerview和的xml文件,和对应的adapter即可.rec ...

  8. android 键盘快捷指令

    ANDROID 键盘快捷指令 2011-06-01 22:35:59|  分类: ANDROID|字号 订阅 基本代码 *#*#4636#*#* - 显示手机信息.电池信息.电池记录.使用统计数据.W ...

  9. Android 输入法表情上传服务器

    对于表情上传,无非是转码和解码,对于Android 键盘自带的表情也是有对应的编码,我们点击表情EditText会自动的识别表情,系统根据编码进行解码,显示出来 好了不废话了,上货 我实现的就是先将拿 ...

  10. 自定义Android键盘

    前言 相关属性 Keyboard Row Key KeyboardView 自定义键盘 布局 字母键盘布局 数字键盘布局 逻辑 回显 备选小键盘 前言 前段时间改造了公司的安全键盘,是基于Dialog ...

最新文章

  1. idea中使用docker插件部署项目
  2. Sqli-labs less 62
  3. 蚂蚁王益:Go+ 可有效补全 Python 的不足
  4. log4j配置文件及nutch中的日志配置
  5. css文本居中的几种方式
  6. mybatis-generator配置流程(详细) 2021-05-15
  7. mysql函数commit_phpmysqli_commit()函数和mysqli_autocommit()函数比较
  8. vi编辑器使用技巧篇1
  9. 9011,9012,9013,9014,9015,9016,9017,9018,8050,8550
  10. 用计算机写作文的好处,第7课 用计算机写作文教案
  11. 2023年基建工程(设计规划施工)经验分享,超多干货
  12. python 坐标轴单位标注_matlab坐标轴如何带单位标注?
  13. 时间晶体,一种曾被认为是无法存在的物质,被创造出来了吗?
  14. 基于4组DDR KU115的PCIe 光纤加速计算卡419 光纤PCIe卡
  15. 谈谈我的框架设计经验
  16. 数学界的扫地僧们(转)
  17. EXE文件结构及原理
  18. 迈柯唯Servo-s中文编修手册
  19. Multicore Navigator (CPPI):Notify end of QM interrupt
  20. 基于JavaWeb的家庭食谱管理系统设计与实现

热门文章

  1. 破解绘声绘影x5的方法
  2. Radius 协议介绍
  3. 黄杏元《地理信息系统概论》考研复习考点精讲(二)
  4. 音频转码-Mp3转AMR--转载请注明出处
  5. 计算机科学的哲学思想,计算机科学哲学的核心理念
  6. 【STM32H7的DSP教程】第17章 DSP功能函数-定点数互转
  7. Java并发机制的底层实现原理(Java并发编程的艺术整理)
  8. 服务器lsass状态代码c0000005,提示lsass.exe失败状态代码c0000005
  9. 基于flowplayer的视频缩略图的视频预览
  10. python调用库实现dwg批量转pdf_如何对PDF进行批量转换成CAD