首页 > 系统 > Android > 正文

Android开发之判断有无虚拟按键(导航栏)的实例

2019-10-22 18:16:59
字体:
来源:转载
供稿:网友

判断有无虚拟按键(导航栏)

现在很大一部分手机没有虚拟按键,一部分有。我们在做适配的时候可能会用到这方面的知识。

例如:屏幕填充整个屏幕的时候,没办法只能连导航栏一起填充了,但是这个不是我们想要的,我们要给布局试着paddingbottom,这个时候我们就要判断有么有导航栏,导航栏高度是多少了。

/**  * 获取是否存在NavigationBar  * @param context  * @return  */ public boolean checkDeviceHasNavigationBar(Context context) {  boolean hasNavigationBar = false;  Resources rs = context.getResources();  int id = rs.getIdentifier("config_showNavigationBar", "bool", "android");  if (id > 0) {   hasNavigationBar = rs.getBoolean(id);  }  try {   Class systemPropertiesClass = Class.forName("android.os.SystemProperties");   Method m = systemPropertiesClass.getMethod("get", String.class);   String navBarOverride = (String) m.invoke(systemPropertiesClass, "qemu.hw.mainkeys");   if ("1".equals(navBarOverride)) {    hasNavigationBar = false;   } else if ("0".equals(navBarOverride)) {    hasNavigationBar = true;   }  } catch (Exception e) {  }  return hasNavigationBar; } /**  * 获取虚拟功能键高度  * @param context  * @return  */ public int getVirtualBarHeigh(Context context) {  int vh = 0;  WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);  Display display = windowManager.getDefaultDisplay();  DisplayMetrics dm = new DisplayMetrics();  try {   @SuppressWarnings("rawtypes")   Class c = Class.forName("android.view.Display");   @SuppressWarnings("unchecked")   Method method = c.getMethod("getRealMetrics", DisplayMetrics.class);   method.invoke(display, dm);   vh = dm.heightPixels - windowManager.getDefaultDisplay().getHeight();  } catch (Exception e) {   e.printStackTrace();  }  return vh; }

以上这篇Android开发之判断有无虚拟按键(导航栏)的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持VEVB武林网。


注:相关教程知识阅读请移步到Android开发频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表