Android开发之判断有无虚拟按键(导航栏)的实例
判断有无虚拟按键(导航栏)
现在很大一部分手机没有虚拟按键,一部分有。我们在做适配的时候可能会用到这方面的知识。
例如:屏幕填充整个屏幕的时候,没办法只能连导航栏一起填充了,但是这个不是我们想要的,我们要给布局试着paddingbottom,这个时候我们就要判断有么有导航栏,导航栏高度是多少了。
/** *获取是否存在NavigationBar *@paramcontext *@return */ publicbooleancheckDeviceHasNavigationBar(Contextcontext){ booleanhasNavigationBar=false; Resourcesrs=context.getResources(); intid=rs.getIdentifier("config_showNavigationBar","bool","android"); if(id>0){ hasNavigationBar=rs.getBoolean(id); } try{ ClasssystemPropertiesClass=Class.forName("android.os.SystemProperties"); Methodm=systemPropertiesClass.getMethod("get",String.class); StringnavBarOverride=(String)m.invoke(systemPropertiesClass,"qemu.hw.mainkeys"); if("1".equals(navBarOverride)){ hasNavigationBar=false; }elseif("0".equals(navBarOverride)){ hasNavigationBar=true; } }catch(Exceptione){ } returnhasNavigationBar; } /** *获取虚拟功能键高度 *@paramcontext *@return */ publicintgetVirtualBarHeigh(Contextcontext){ intvh=0; WindowManagerwindowManager=(WindowManager)context.getSystemService(Context.WINDOW_SERVICE); Displaydisplay=windowManager.getDefaultDisplay(); DisplayMetricsdm=newDisplayMetrics(); try{ @SuppressWarnings("rawtypes") Classc=Class.forName("android.view.Display"); @SuppressWarnings("unchecked") Methodmethod=c.getMethod("getRealMetrics",DisplayMetrics.class); method.invoke(display,dm); vh=dm.heightPixels-windowManager.getDefaultDisplay().getHeight(); }catch(Exceptione){ e.printStackTrace(); } returnvh; }
以上这篇Android开发之判断有无虚拟按键(导航栏)的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。