文章参考自 http://blog.csdn.net/sinat_31311947/article/details/53899166
纯粹的记录
public class KeyboardUtils { /** * 获取键盘是否谈起 * @param context * @return */ public static boolean isKeyboardUp(Activity context){ Rect r = new Rect(); //获取当前界面可视部分 context.getWindow().getDecorView().getWindowVisibleDisplayFrame(r); //获取屏幕的高度 int screenHeight = context.getWindow().getDecorView().getRootView().getHeight(); //此处就是用来获取键盘的高度的, 在键盘没有弹出的时候 此高度为0 键盘弹出的时候为一个正数 int heightDifference = screenHeight - r.bottom-getSoftButtonsBarHeight(context); System.out.println("jianpan:"+heightDifference); if(heightDifference>0){ return true; }else{ return false; } } /** * 底部虚拟按键栏的高度 * @return */ @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) private static int getSoftButtonsBarHeight(Activity context) { DisplayMetrics metrics = new DisplayMetrics(); //这个方法获取可能不是真实屏幕的高度 context.getWindowManager().getDefaultDisplay().getMetrics(metrics); int usableHeight = metrics.heightPixels; //获取当前屏幕的真实高度 context.getWindowManager().getDefaultDisplay().getRealMetrics(metrics); int realHeight = metrics.heightPixels; if (realHeight > usableHeight) { return realHeight - usableHeight; } else { return 0; } } }
使用方法很简单 在activity中调用即可 列:
if(KeyboardUtils.isKeyboardUp(this)){ InputMethodManager m = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); m.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); }