最近我司的设计师提出一个需求,要模仿微信软件弹出/隐藏的用户体验效果,我不知道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
网友评论