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开发之判断有无虚拟按键(导航栏)的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。