美文网首页
Android 监听键盘弹出和隐藏

Android 监听键盘弹出和隐藏

作者: guoheng1996 | 来源:发表于2018-12-03 14:39 被阅读0次
    package jp.co.eposcard.eposcardapp.common;
    
    import android.app.Activity;
    import android.graphics.Rect;
    import android.view.View;
    import android.view.ViewTreeObserver;
    
    public class EPSoftKeyBoardListener {
        private View rootView;
        private int rootViewVisibleHeight;
        private OnSoftKeyBoardChangeListener onSoftKeyBoardChangeListener;
    
        public EPSoftKeyBoardListener(Activity activity) {
    
            rootView = activity.getWindow().getDecorView();
    
            rootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
                @Override
                public void onGlobalLayout() {
    
                    Rect r = new Rect();
                    rootView.getWindowVisibleDisplayFrame(r);
    
                    int visibleHeight = r.height();
                    if (rootViewVisibleHeight == 0) {
                        rootViewVisibleHeight = visibleHeight;
                        return;
                    }
    
                    if (rootViewVisibleHeight == visibleHeight) {
                        return;
                    }
    
                    if (rootViewVisibleHeight - visibleHeight > 200) {
                        if (onSoftKeyBoardChangeListener != null) {
                            onSoftKeyBoardChangeListener.keyBoardShow(rootViewVisibleHeight - visibleHeight);
                        }
                        rootViewVisibleHeight = visibleHeight;
                        return;
                    }
    
                    if (visibleHeight - rootViewVisibleHeight > 200) {
                        if (onSoftKeyBoardChangeListener != null) {
                            onSoftKeyBoardChangeListener.keyBoardHide(visibleHeight - rootViewVisibleHeight);
                        }
                        rootViewVisibleHeight = visibleHeight;
                        return;
                    }
    
                }
            });
        }
    
        private void setOnSoftKeyBoardChangeListener(OnSoftKeyBoardChangeListener onSoftKeyBoardChangeListener) {
            this.onSoftKeyBoardChangeListener = onSoftKeyBoardChangeListener;
        }
    
        public interface OnSoftKeyBoardChangeListener {
            void keyBoardShow(int height);
    
            void keyBoardHide(int height);
        }
    
        public static void setListener(Activity activity, OnSoftKeyBoardChangeListener onSoftKeyBoardChangeListener) {
            EPSoftKeyBoardListener softKeyBoardListener = new EPSoftKeyBoardListener(activity);
            softKeyBoardListener.setOnSoftKeyBoardChangeListener(onSoftKeyBoardChangeListener);
        }
    }
    
    

    相关文章

      网友评论

          本文标题:Android 监听键盘弹出和隐藏

          本文链接:https://www.haomeiwen.com/subject/bbyycqtx.html