android 软键盘监听显示和隐藏
2017-06-09 09:59
260 查看
githup中找到:https://github.com/yescpu/KeyboardChangeListener
import android.app.Activity; import android.os.Build; import android.util.Log; import android.view.View; import android.view.ViewTreeObserver; /** * simple and powerful Keyboard show/hidden listener,view {@android.R.id.content} and {@ViewTreeObserver.OnGlobalLayoutListener} * Created by yes.cpu@gmail.com 2016/7/13. */ public class KeyboardChangeListener implements ViewTreeObserver.OnGlobalLayoutListener { private static final String TAG = "ListenerHandler"; private View mContentView; private int mOriginHeight; private int mPreHeight; private KeyBoardListener mKeyBoardListen; public interface KeyBoardListener { /** * call back * @param isShow true is show else hidden * @param keyboardHeight keyboard height */ void onKeyboardChange(boolean isShow, int keyboardHeight); } public void setKeyBoardListener(KeyBoardListener keyBoardListen) { this.mKeyBoardListen = keyBoardListen; } public KeyboardChangeListener(Activity contextObj) { if (contextObj == null) { Log.i(TAG, "contextObj is null"); return; } mContentView = findContentView(contextObj); if (mContentView != null) { addContentTreeObserver(); } } private View findContentView(Activity contextObj) { return contextObj.findViewById(android.R.id.content); } private void addContentTreeObserver() { mContentView.getViewTreeObserver().addOnGlobalLayoutListener(this); } @Override public void onGlobalLayout() { int currHeight = mContentView.getHeight(); if (currHeight == 0) { Log.i(TAG, "currHeight is 0"); return; } boolean hasChange = false; if (mPreHeight == 0) { mPreHeight = currHeight; mOriginHeight = currHeight; } else { if (mPreHeight != currHeight) { hasChange = true; mPreHeight = currHeight; } else { hasChange = false; } } if (hasChange) { boolean isShow; int keyboardHeight = 0; if (mOriginHeight == currHeight) { //hidden isShow = false; } else { //show keyboardHeight = mOriginHeight - currHeight; isShow = true; } if (mKeyBoardListen != null) { mKeyBoardListen.onKeyboardChange(isShow, keyboardHeight); } } } public void destroy() { if (mContentView != null) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { mContentView.getViewTreeObserver().removeOnGlobalLayoutListener(this); } } } }
KeyboardChangeListener
simple and powerful Keyboard show/hidden change listener,without having to add a layout and can run in every Activity;
useage
make activity:
android:windowSoftInputMode="adjustResize"
java:
new KeyboardChangeListener(this).setKeyBoardListener(new KeyboardChangeListener.KeyBoardListener() { @Override public void onKeyboardChange(boolean isShow, int keyboardHeight) { Log.d(TAG, "isShow = [" + isShow + "], keyboardHeight = [" + keyboardHeight + "]"); } });
#enjoy!
感谢作者!
相关文章推荐
- Android监听软键盘的显示与隐藏
- Android监听软键盘的显示与隐藏
- Android 监听软键盘的显示与隐藏
- Android 监听软键盘的显示与隐藏
- android 监听软键盘的显示与隐藏
- android 关于软键盘的显示和隐藏监听,解决挡住Editview的问题
- Android 控制软键盘显示、隐藏,并且添加软键盘的状态监听的终极解决办法
- Android软键盘(六)如何监听到软件盘显示与隐藏的事件
- Android软键盘(六)如何监听到软件盘显示与隐藏的事件,完美实现登录界面
- 关于android 软键盘显示与隐藏监听
- Android软键盘的隐藏显示监听
- Android项目:输入法软键盘显示/隐藏的监听和控制,InputMethodManager用法研究
- android软键盘的显示后隐藏
- Android软键盘的隐藏显示研究
- android-隐藏或显示软键盘
- Android软键盘的隐藏显示研究
- Android软键盘的隐藏显示研究
- Android 软键盘的显示和隐藏
- android隐藏以及显示软键盘
- android-隐藏和显示软键盘