private View decorView;
public void addOnSoftKeyBoardVisibleListener() {
decorView = MainActivity.this..getWindow().getDecorView();
decorView.getViewTreeObserver().addOnGlobalLayoutListener(mKeyBoardVisibleListener);
}
public void removeOnSoftKeyBoardVisibleListener() {
if (decorView != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
decorView.getViewTreeObserver().removeOnGlobalLayoutListener(mKeyBoardVisibleListener);
} else {
decorView.getViewTreeObserver().removeGlobalOnLayoutListener(mKeyBoardVisibleListener);
}
}
private ViewTreeObserver.OnGlobalLayoutListener mKeyBoardVisibleListener = new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect rect = new Rect();
decorView.getWindowVisibleDisplayFrame(rect);
double displayHeight = rect.bottom - rect.top;
double height = decorView.getHeight();
boolean isKeyBoardVisible = (displayHeight / height) < 0.8;
}
};
public void addOnSoftKeyBoardVisibleListener() {
decorView = MainActivity.this..getWindow().getDecorView();
decorView.getViewTreeObserver().addOnGlobalLayoutListener(mKeyBoardVisibleListener);
}
public void removeOnSoftKeyBoardVisibleListener() {
if (decorView != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
decorView.getViewTreeObserver().removeOnGlobalLayoutListener(mKeyBoardVisibleListener);
} else {
decorView.getViewTreeObserver().removeGlobalOnLayoutListener(mKeyBoardVisibleListener);
}
}
}
public void onDestroy() {
removeOnSoftKeyBoardVisibleListener();
}
private ViewTreeObserver.OnGlobalLayoutListener mKeyBoardVisibleListener = new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect rect = new Rect();
decorView.getWindowVisibleDisplayFrame(rect);
double displayHeight = rect.bottom - rect.top;
double height = decorView.getHeight();
boolean isKeyBoardVisible = (displayHeight / height) < 0.8;
}
};