1.布局属性设置
布局的theme属性使用parent="@style/Theme.AppCompat.Light.NoActionBar"
1.1 Activity的theme属性可以在AndroidManifest.xml清单文件中设置
<activity
android:name=".TestActivity"
android:configChanges="orientation|screenSize"
android:launchMode="standard"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Light.NoActionBar" >
</activity>
1.2 悬浮窗的theme属性可以在布局文件的根布局下设置
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/test_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:theme="@style/Theme.AppCompat.NoActionBar">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</FrameLayout>
2.Window窗口属性设置
Activity隐藏虚拟按键和状态栏
/**
* Activity 隐藏底部虚拟按键和系统状态栏
* */
public static void hideBottomUIMenuForActivity(Activity activity) {
try {
Window window = activity.getWindow();
WindowManager.LayoutParams params = window.getAttributes();
params.systemUiVisibility = View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_FULLSCREEN;
window.setStatusBarColor(Color.TRANSPARENT);
window.setNavigationBarColor(Color.TRANSPARENT);
params.flags |= WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION;
params.flags |= WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
window.setAttributes(params);
} catch (Exception e) {
e.printStackTrace();
}
}
悬浮窗隐藏虚拟按键和状态栏
WindowManager.LayoutParams wmParams = new WindowManager.LayoutParams();
if (Build.VERSION.SDK_INT >= 26) {
wmParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
} else {
wmParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
}
wmParams.gravity = Gravity.CENTER;
wmParams.width = 1;//悬浮窗宽高
wmParams.height = 1;
//此处是重点,隐藏悬浮窗和状态栏,和Activity隐藏的代码一样
wmParams.systemUiVisibility = View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_FULLSCREEN;
wmParams.flags |= WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION;
wmParams.flags |= WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
PopupWindow隐藏虚拟按键和状态栏
/**
* 隐藏PopupWindow页面弹出时的虚拟按键和系统状态栏
*/
public static void hideBottomUIMenuForPopupWindow(final PopupWindow popupWindow) {
try {
if (popupWindow != null && popupWindow.getContentView() != null) {
popupWindow.getContentView().setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
// //保持布局状态
int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
//布局位于状态栏下方
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
//全屏
View.SYSTEM_UI_FLAG_FULLSCREEN |
//隐藏导航栏
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
if (Build.VERSION.SDK_INT >= 19) {
uiOptions |= 0x00001000;
} else {
uiOptions |= View.SYSTEM_UI_FLAG_LOW_PROFILE;
}
popupWindow.getContentView().setSystemUiVisibility(uiOptions);
}
});
}
} catch (Exception e) {
e.printStackTrace();
}
}
Dialog隐藏虚拟按键和状态栏
/**
* Dialog弹出时隐藏底部虚拟按键和系统状态栏
* */
public static void hideBottomUIMenuForDialog(Dialog dialog) {
try {
dialog.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
dialog.getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
//布局位于状态栏下方
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
//全屏
View.SYSTEM_UI_FLAG_FULLSCREEN |
//隐藏导航栏
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
uiOptions |= 0x00001000;
dialog.getWindow().getDecorView().setSystemUiVisibility(uiOptions);
}
});
} catch (Exception e) {
e.printStackTrace();
}
}