java 检测键盘的打开/隐藏事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 检测键盘的打开/隐藏事件相关的知识,希望对你有一定的参考价值。

...

private View mDecorView;
private OnGlobalLayoutListener mOnGlobalLayoutListener;
private long mLastShowKeyboardTime = -1L;

...


public void onCreate(...) {
  mOnGlobalLayoutListener = new OnGlobalLayoutListener() {

            @Override
            public void onGlobalLayout() {
                Rect rect = new Rect();
                mDecorView.getWindowVisibleDisplayFrame(rect);
                int displayHeight = rect.bottom - rect.top;
                int height = mDecorView.getHeight();
                boolean visible = (double) displayHeight / height < 0.8;

                if (visible) {
                    if (mLastShowKeyboardTime == -1) {
                        mLastShowKeyboardTime = System.currentTimeMillis();
                    }

                    ToastUtil.shortTips("visible");
                } else {
                    if (mLastShowKeyboardTime != -1) {
                        mLastShowKeyboardTime = -1;
                        ToastUtil.shortTips("gone");
                    }
                }
            }
        };

        mDecorView = mContext.getWindow().getDecorView();
        mDecorView.getViewTreeObserver().addOnGlobalLayoutListener(mOnGlobalLayoutListener);
}

@Override
public void onDestroy() {
  if (mDecorView != null && mOnGlobalLayoutListener != null) {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
        mDecorView.getViewTreeObserver().removeGlobalOnLayoutListener(mOnGlobalLayoutListener);
    } else {
        mDecorView.getViewTreeObserver().removeOnGlobalLayoutListener(mOnGlobalLayoutListener);
    }
  }

  super.onDestroy();
}

以上是关于java 检测键盘的打开/隐藏事件的主要内容,如果未能解决你的问题,请参考以下文章

Android:检测打开的键盘,onApplyWindowListener 不起作用

键盘出现时隐藏元素

Android点击EditText文本框之外任何地方隐藏键盘的解决办法

在 Ajax 应用程序中提交表单时隐藏移动 Safari 键盘

颤振检测键盘隐藏动画的结束

如何使用JavaScript捕获iOS上的隐藏键盘事件