今天晚上教大家一个UI特效, 登陆页面拉钩平滑动画过度动效。
同时,在给大家分享之前,这里推荐下我自己建的Android技术分享群 :653961128,不管你是小白还是大牛,小编我都挺欢迎,不定期分享干货,包括2017最新的Android企业案例学习资料和零基础入门教程,欢迎初学和进阶中的小伙伴,大家一起交流学习,共同进步。
效果
中心思想就是activity根布局监听布局变化,实现
ViewTreeObserver.OnGlobalLayoutListener接口,根据根布局高度变化超过高度的1/4就是认为键盘弹起来了。
默认高度变化超过100就认为键盘弹起,并且此处获取的键盘的高度没有减去状态栏的高度,我改进了一下,当非全屏的时候获取的键盘高度减去状态栏的高度。
修改后的代码截图如下:
下面开始写登陆页面的布局,也没啥难的,就我这个方案注意几点就行:
- 把需要往上移动的布局放在一个容器里面;
- 容器的高度计算好,给出定值;
- 登录页面设置键盘模式为
:android:windowSoftInputMode=”adjustResize” - 在
KeyboardWatcher.SoftKeyboardStateListener的回调接口里面处理要处理的事,也就是平移动画之类的,看着玩耍吧!
- void onSoftKeyboardOpened(int keyboardHeightInPx);
- void onSoftKeyboardClosed();
回顾
这个跟上次相比还有一个点就是关于显示和隐藏密码的问题:
1.发现之前项目的显示和隐藏密码是动态设置EditText的inputType来实现的,效果不太好,有点键盘抖动的赶脚。所以用了EditText的setTransformationMethod方法来实现,想过看了就知道,棒棒的~
2.封装了TextView的上下左右Drawable,可以实现动态在布局文件设置大小及资源,省的在Act or Frg去设置了: