当系统全屏时,很多悬浮窗会向上移动一小段距离,原因窗口布局是从状态栏之后开始的,全屏时没有状态栏了,所以会向上移动,给窗口加上
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN 可以解决这个问题,这个 flag 经常和
WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR 一起使用。
mParams.flags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
/** Window flag: place the window within the entire screen, ignoring * decorations around the border (such as the status bar). The * window must correctly position its contents to take the screen * decoration into account. This flag is normally set for you * by Window as described in {@link Window#setFlags}. */
public static final int FLAG_LAYOUT_IN_SCREEN = 0x00000100;
/** Window flag: a special option only for use in combination with * {@link #FLAG_LAYOUT_IN_SCREEN}. When requesting layout in the * screen your window may appear on top of or behind screen decorations * such as the status bar. By also including this flag, the window * manager will report the inset rectangle needed to ensure your * content is not covered by screen decorations. This flag is normally * set for you by Window as described in {@link Window#setFlags}.*/
public static final int FLAG_LAYOUT_INSET_DECOR = 0x00010000;