威哥开发手机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" />
效果图: