Android软键盘总结(笔记)

来源:互联网 发布:淘宝中的查询热度 编辑:程序博客网 时间:2024/06/14 10:08

最近做一个搜索框的功能

发现软键盘隐藏后切换界面,会出现抖动

这种抖动简直不能忍,非常影响交互


Google了一下,关于软键盘的一些资料。

大多都是设置setSoftInputMode的文章(布局被软键盘顶起来了)

没有解决我的问题,这里留一个讲的比较好博客链接


先说一下我碰到的情况:

1.首页点击搜索框(图片)进入到搜索页面

2.搜索页的输入框获取焦点,软键盘弹出

3.点击返回按钮,返回首页:

此时首页出现抖动现象。页面上弹然后再向下伸展。


下面的是原来的代码

private fun jumpTo(tag: Int) {    RxKeyboardTool.hideSoftInput(activity, etSearchBar)    replaceFragment?.type = tag    EventBus.getDefault().post(replaceFragment)}

下面的是修改后的代码

private fun jumpTo(tag: Int) {    RxKeyboardTool.hideSoftInput(activity, etSearchBar)    replaceFragment?.type = tag    search_container?.animate()            ?.translationY(50f)            ?.alpha(0f)            ?.setDuration(400)?.withEndAction {        EventBus.getDefault().post(replaceFragment)    }}

对比前后代码可以看到:

我在隐藏键盘后执行了一个动画,并在动画执行完之后才进行页面切换(相当于做了一个延时操作)


下面来分析一下原理:

修改前的代码为什么会导致抖动?原因是隐藏软键盘是耗时操作,在后台执行。隐藏键盘的操作没有执行完,而切换页面的代码已经执行。

切换的页面(布局)被键盘顶上去了。当键盘的隐藏操作执行完,被顶上去的页面(布局)又会下弹。所以出现了抖动现象。



原创粉丝点击