关闭

Android 检查设备是否存在 导航栏 NavigationBar

1531人阅读 评论(0) 收藏 举报
分类:
	 /**
	  * 检查设备是否有导航栏
	  * @param activity
	  * @return
	  */
	 @SuppressLint("NewApi") 
	 public static boolean checkDeviceHasNavigationBar(Context activity) {

//通过判断设备是否有返回键、菜单键(不是虚拟键,是手机屏幕外的按键)来确定是否有navigation bar
boolean hasMenuKey = false;
boolean hasBackKey = false;
try {
hasMenuKey = ViewConfiguration.get(activity).hasPermanentMenuKey();
} catch (java.lang.NoSuchMethodError e) {
// TODO: handle exception
}
try {
hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);
} catch (java.lang.NoSuchMethodError e) {
// TODO: handle exception
}


if (!hasMenuKey && !hasBackKey) {
// 做任何你需要做的,这个设备有一个导航栏
return true;
}
return false;
		}
	 
	 /**
	  * 获取导航栏高度 ,此方法不会检查导航栏是否存在,直接返回数值。所以可能手机没有显示导航栏,但是高度依然返回
	  * @param activity
	  * @return
	  */
	 public static int getNavigationBarHeight(Context activity) {
			Resources resources = activity.getResources();
			int resourceId = resources.getIdentifier("navigation_bar_height",
					"dimen", "android");
			//获取NavigationBar的高度
			int height = resources.getDimensionPixelSize(resourceId);
			return height;
		}
	 
	 /**
	  * 获取导航栏高度,此方法会根据手机是否存在导航栏,返回相应的数值
	  * @param activity
	  * @return
	  */
	 public static int getNavigationBarHeightEx(Context activity){
		 if(checkDeviceHasNavigationBar(activity)){
			 return getNavigationBarHeight(activity);
		 }
		 return 0;
	 }

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:650017次
    • 积分:8004
    • 等级:
    • 排名:第2856名
    • 原创:76篇
    • 转载:471篇
    • 译文:1篇
    • 评论:114条
    最新评论