最近在项目中用到沉浸式状态栏,但是在华为手机上在XML文件中设置主题并没有什么用,而且很多app也没有解决这个问题,闲言少叙,直接上图:
代码如下:
import android.app.Activity;
import android.content.res.Resources;
import android.os.Build;
import android.util.Log;
import android.view.WindowManager;
import java.lang.reflect.Method;
/**
* 用于设置沉浸式状态栏
*/
public class StatusBar {
public static void transportStatus(Activity context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
context.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
if (!isHaveNavigationBar(context))
context.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}
}
public static boolean isHaveNavigationBar(Activity context) {
boolean isHave = false;
Resources rs = context.getResources();
int id = rs.getIdentifier("config_showNavigationBar", "bool", "android");
if (id > 0) {
isHave = 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)) {
isHave = false;
} else if ("0".equals(navBarOverride)) {
isHave = true;
}
} catch (Exception e) {
Log.w("TAG", e);
}
return isHave;
}
}