如何创建二级域名网站/怎样制作网页
部分手机,尤其是华为手机,底部会出现一个软键盘,这个是是可以设置的,让其消失,以下以华为手机为例说明。通常我们获取屏幕的宽高有几种方法,通用的
有
public static int getScreenHeight(Context context) {DisplayMetrics dm = new DisplayMetrics();WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);wm.getDefaultDisplay().getMetrics(dm);return dm.widthPixels;}
结果,我是用了这个方法,却发现获取的高度与手机系统给出的高度不一样,有一点的差距,此时手机的软键盘是出于打开状态,如果把软键盘收起来,再调用这
个方法,两个数值就对上了。我就想,找下获取底部软键盘的高度的方法,如下
public static int getBottomBarHeight(Context context) {int resourceId = 0;int rid = context.getResources().getIdentifier("config_showNavigationBar", "bool", "android");if (rid != 0) {resourceId = context.getResources().getIdentifier("navigation_bar_height", "dimen", "android");return context.getResources().getDimensionPixelSize(resourceId);} elsereturn 0;}
上面的方法就可以获取到软键盘的高度,如果软键盘没收起,我们想获取屏幕的高度,怎么办?google 实际上是提供了方法,只不过是在 4.4 新增的方法,
我们可以通过反射来获取试试
public static int getContainVirtualKey(Context context) {int dpi = 0;WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);Display display = wm.getDefaultDisplay();DisplayMetrics dm = new DisplayMetrics();@SuppressWarnings("rawtypes")Class c;try {c = Class.forName("android.view.Display");@SuppressWarnings("unchecked")Method method = c.getMethod("getRealMetrics", DisplayMetrics.class);method.invoke(display, dm);dpi = dm.heightPixels;} catch (Exception e) {e.printStackTrace();}return dpi;}
既然我们知道了这个方法,那么可以通过版本的判断,直接调用,而非是使用反射,代码如下
public static int getPreenHeight(Context context) {WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);DisplayMetrics dm = new DisplayMetrics();if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {wm.getDefaultDisplay().getRealMetrics(dm);} else {wm.getDefaultDisplay().getMetrics(dm);}int height = dm.heightPixels;return height;}
可以通过以上的方法,来判断软键盘是否处于收起状态,如果想把软键盘收起来,继续上代码
private void hideVirtualKeyBoard(){if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION| View.SYSTEM_UI_FLAG_FULLSCREEN| View.SYSTEM_UI_FLAG_IMMERSIVE);//API19} else {getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION| View.SYSTEM_UI_FLAG_FULLSCREEN);}}