美文网首页自定义控件
模仿微信软键盘弹出/隐藏

模仿微信软键盘弹出/隐藏

作者: 菜鸟Android | 来源:发表于2017-03-21 13:29 被阅读180次

           最近我司的设计师提出一个需求,要模仿微信软件弹出/隐藏的用户体验效果,我不知道iOS是怎么实现的,但是我知道Android没有这样的API来供开发者直接使用的。带着一脸懵逼,我开始Google搜索(注:Android开发过程中最好使用google搜索),果然有很多前辈已经碰到这个坑了并且已经提供方法来跳坑了,以下是Google搜索的图:

    google搜索显示

            虽然前辈们已经提供了很多方法解决,但是本人还是感觉有点繁琐(本人菜鸟一枚啊!!!不要喷啊!!!)。在参考了前辈们的方法后,不自量力的提供了自己的解决方案(这里我就不在累述软件盘的相关知识了,感兴趣的可以自己去google啊!!!)。

    1.获取到第一次软键盘弹出来的高度,并且记录下来(这里本人就简单使用一个变量来记录,大家可以根据自己的需求来实现啊),我直接上代码了:

    获取软件盘高度并记录

    2.EditText第一次获取焦点弹出软键盘时,把下面的布局高度设置为0,如图所示:

    原理框图

    上代码:

    EditText第一次弹出软键盘判读

    3.给EditText添加一个布局变化监听事件,EditText.getViewTreeObserver().addOnGlobalLayoutListener(layoutParamsChangListener);

    这个监听事件是用于监听软键盘弹出来时,布局会发生变化的事件,在该事件里获取到软键盘的高度,

    上代码:

    布局变化监听事件

     4.隐藏键盘时,给EditText下面的布局重新绘制高度,并且加入时间延迟,上代码:

    给布局绘制高度

    这样在该界面使用软件时只会在第一次有布局变化,后面的体验基本和微信相仿,完整代码稍后会整理到GitHub上。

    完整代码如下:

    监听布局变化完整代码

    给Edittext添加这个监听事件就可以了。

    效果图如下:

    效果图

    第一次写文章,请多多指教,勿喷!!!

    参考文章:

    仿微信聊天界面——键盘与面板的切换: http://blog.csdn.net/u011443509/article/details/52142139

    android高仿微信表情输入与键盘输入(详细实现分析):blog.csdn.net/javazejian/article/details/52126391

    相关文章

      网友评论

      本文标题:模仿微信软键盘弹出/隐藏

      本文链接:https://www.haomeiwen.com/subject/gdzwnttx.html