android 点击空白区域键盘消失&加载gif图片

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

效果图:

猜你喜欢

转载自blog.csdn.net/xuwei_net/article/details/83893415
今日推荐