1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > android判断多个按钮 Android开发之判断有无虚拟按键(导航栏)的实例

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

时间:2023-06-03 11:22:19

相关推荐

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

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

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

例如:屏幕填充整个屏幕的时候,没办法只能连导航栏一起填充了,但是这个不是我们想要的,我们要给布局试着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开发之判断有无虚拟按键(导航栏)的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。