威哥开发手机Pda系统,发现输入完用户名后,发现秘密文本框被软键盘阻挡,非常影响用户使用,如是,威哥想用户在完成用户名输入之后,手指点击空白处,自动消失软键盘,方便用户手指直接定位到密码框。
威哥遇到的效果图如下:


威哥希望输入完用户名,手指轻轻触碰下空白处自动收缩起软键盘。
需要2步操作。
1.封装类:
/**
* 窗体页面帮助类
* Author:William(徐威)
* Create Time:2018-11-08
*/
public class WindowHelper {
/**
* 判定当前是否需要隐藏
* Author:William(徐威)
* Create Time:2018-11-08
*/
public static boolean isShouldHideKeyBord(View v, MotionEvent ev) {
if (v != null && (v instanceof EditText)) {
int[] l = {0, 0};
v.getLocationInWindow(l);
int left = l[0], top = l[1], bottom = top + v.getHeight(), right = left + v.getWidth();
return !(ev.getX() > left && ev.getX() < right && ev.getY() > top && ev.getY() < bottom);
}
return false;
}
/**
* 隐藏软键盘
* Author:William(徐威)
* Create Time:2018-11-08
* @param token
* @param context
*/
public static void hideSoftInput(IBinder token, Context context) {
if (token != null) {
InputMethodManager manager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
manager.hideSoftInputFromWindow(token, InputMethodManager.HIDE_NOT_ALWAYS);
}
}
}
2.页面重新Touch事件:
/**
* 重写Touch事件
* Author:William(徐威)
* Create Time:2018-11-08
*/
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
View view = getCurrentFocus();
if (WindowHelper.isShouldHideKeyBord(view, ev)) {
WindowHelper.hideSoftInput(view.getWindowToken(), IndexActivity.this);
}
}
return super.dispatchTouchEvent(ev);
}
Ok,世界清静了。
下面是威哥顺带分享的Gif图片如何展示,Gif图片用Android自带的ImageView是无法播放的。可以有三种方法实现。
1、使用Glide加载(威哥感觉写得也挺麻烦);
2、继承ImageView重写自定义控件;
3、直接引用三方控件。
遗憾的是,威哥项目赶,没时间重写了,取了方法3,直接在Android项目中引用谷歌的library:

xml代码:
<pl.droidsonroids.gif.GifImageView
android:id="@+id/gif_Index_Loading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:visibility="gone"
android:src="@drawable/loading" />
效果图:

自动隐藏软键盘

本文介绍了一种在手机PDA系统中自动隐藏软键盘的方法,通过封装窗体页面帮助类和重写页面Touch事件,实现在用户输入用户名后,轻触空白处自动收起软键盘,提升用户体验。
1097

被折叠的 条评论
为什么被折叠?



