项目地址(github)
效果图
image.pngimage.png
1、在MainActivity的onCreate方法,在super.onCreate(savedInstanceState);前添加判断setStatus(this)
public void setStatus(Activity activity){
if(!isNavigationBarShow(activity)) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);//窗口透明的状态栏
activity.requestWindowFeature(Window.FEATURE_NO_TITLE);//隐藏标题栏
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);//窗口透明的导航栏
}
}else{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
activity.getWindow().setStatusBarColor(Color.TRANSPARENT);
}
}
}
//是否是虚拟按键的设备
private boolean isNavigationBarShow(Activity activity){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
Display display = activity.getWindowManager().getDefaultDisplay();
Point size = new Point();
Point realSize = new Point();
display.getSize(size);
display.getRealSize(realSize);
boolean result = realSize.y!=size.y;
return realSize.y!=size.y;
}else {
boolean menu = ViewConfiguration.get(activity).hasPermanentMenuKey();
boolean back = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);
if(menu || back) {
return false;
}else {
return true;
}
}
}
2、Flutter项目中添加及调用
static setBarStatus(bool isDarkIcon, {Color color: Colors.transparent}) async{
if (Platform.isAndroid) {
if (isDarkIcon) {
SystemUiOverlayStyle systemUiOverlayStyle = SystemUiOverlayStyle(
statusBarColor: color, statusBarIconBrightness: Brightness.dark);
SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle);
} else {
SystemUiOverlayStyle systemUiOverlayStyle = SystemUiOverlayStyle(
statusBarColor: color, statusBarIconBrightness: Brightness.light);
SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle);
}
}
}
class LoginPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement build
DeviceUtil.setBarStatus(true); //这个地方调用
return new MaterialApp(
title: "登录",
theme: ThemeData(
primaryColor: ObjectUtil.getThemeColor(color: 'white'),
platform: TargetPlatform.iOS),
home: new Login(),
routes: {
'/MainPage': (ctx) => MainPage(),
});
}
}
网友评论