关于Android状态栏和虚拟导航栏的适配,文章:https://blog.csdn.net/leogentleman/article/details/54566319
讲的很不错。
状态栏的适配:
在activity里设置了
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
即可。然后再用下面的方法获取状态栏的高度进行适配:
public static int getStatusBarHeight(Context context) {
int statusBarHeight = 0;
int resourceId = context.getResources().getIdentifier(“status_bar_height”, “dimen”, “android”);
if (resourceId > 0) {
statusBarHeight = context.getResources().getDimensionPixelSize(resourceId);
}
return statusBarHeight;
}

底部虚拟导航栏的适配:
可以使用下 面的方法获取底部导航栏的高度:
//获取是否存在NavigationBar
public static 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
}

// 获取NavigationBar高度
public static int getNavigationBarHeight(Context context) {
Resources resources = context.getResources();
int resourceId = resources.getIdentifier(“navigation_bar_height”,“dimen”, “android”);
int height = resources.getDimensionPixelSize(resourceId);
return height;

}

不过在小米手机上,MIUI9,10上有刘海屏模式和全面屏模式,需要进行分别适配。
Settings.Global.getInt(mContext.getContentResolver(), “force_black”, 0) == 1
可以判断是不是刘海屏,指针对不是刘海屏的情况适配。

更多相关文章

  1. No.11 使用firewall配置的防火墙策略的生效模式
  2. SuperITGirl李小扣 air for android做的flash客户端,退出程序的方
  3. android检查手机和无线是否连接的方法
  4. Android(安卓)WebView 禁止输入
  5. Android(安卓)系统设置默认launcher
  6. 解决init: sys_prop: permission denied uid:1003 name:service.
  7. JNI创建Bitmap
  8. Android(安卓)完全退出应用程序back和home键
  9. android 传递图片的方法

随机推荐

  1. Android(安卓)处理空列表的方法(必看篇)
  2. Android(安卓)无需申请key直接调用微信/Q
  3. Android Service相关
  4. android 蓝牙打印程序源代码
  5. 下拉列表(Spinner)
  6. android当方法数超过64k时(android studi
  7. android的ListView
  8. android中application标签说明
  9. Android Wi-Fi AutoConnect to Ap take l
  10. Android 复习笔记之图解Actionbar