WindowManager.LayoutParams详解

Posted startFromWeb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WindowManager.LayoutParams详解相关的知识,希望对你有一定的参考价值。

public static class

WindowManager.LayoutParams

extends  ViewGroup.LayoutParams
implements  Parcelable
java.lang.Object
   ? android.view.ViewGroup.LayoutParams
     ? android.view.WindowManager.LayoutParams
 WindowManager.LayoutParams 是 WindowManager 接口的嵌套类;它继承于 ViewGroup.LayoutParams; 它用于向WindowManager描述Window的管理策略。 主要成员常量 Window flag系列 该系列主要用于对Window的flag进行设置。设置Window的flag,可以直接对Window的getAttributes()得到其 WindowManager.LayoutParams对象,然后直接对它flag变量操作。也可以Window的addFlags(int flags)方法,setFlags(int flags, int mask)方法,clearFlags(int flags)方法进行操作。 比如设置全屏  Window window = getWindow();   WindowManager.LayoutParams winParams = win.getAttributes();   winParams.flags=winParams.flags|WindowManager.LayoutParams.FLAG_FULLSCREEN  或  window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);  或  window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);   取消全屏  Window window = getWindow();   winParams.flags=winParams.flags&~WindowManager.LayoutParams.FLAG_FULLSCREEN;  或   window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);  或 window.setFlags(0, WindowManager.LayoutParams.FLAG_FULLSCREEN); 所有Window flag如下:
int FLAGS_CHANGED 用于表示flags发生了变化,关于此的详细内容请看后文。
int FLAG_ALLOW_LOCK_WHILE_SCREEN_ON Window flag: as long as this window is visible to the user, allow the lock screen to activate while the screen is on.
当该window对用户可见的时候,允许锁屏。
int FLAG_ALT_FOCUSABLE_IM Window flag: invert the state of FLAG_NOT_FOCUSABLE with respect to how this window interacts with the current method.
int FLAG_BLUR_BEHIND Window flag: blur everything behind this window.
让该window后所有东西都模糊(blur)
int FLAG_DIM_BEHIND Window flag: everything behind this window will be dimmed.
让该window后所有的东西都成暗淡(dim)
int FLAG_DISMISS_KEYGUARD Window flag: when set the window will cause the keyguard to be dismissed, 
only if it is not a secure lock keyguard.
int FLAG_DITHER Window flag: turn on dithering when compositing this window to the screen.
开启抖动(dithering)
int FLAG_FORCE_NOT_FULLSCREEN Window flag: Override @link #FLAG_FULLSCREEN and force the screen decorations (such as status bar) to be shown.
恢复window非全屏显示
int FLAG_FULLSCREEN Window flag: Hide all screen decorations (e.g.
window进行全屏显示
int FLAG_HARDWARE_ACCELERATED

Indicates whether this window should be hardware accelerated.

对该window进行硬件加速.

该flag必须在设置你的Activity或Dialog的Content View之前进行设置,

而且如果你在mainfest文件中用android:hardwareAccelerated开启了该属性的话,那么你在程序中就不能再改变它。mainfest文件中android:hardwareAccelerated属性默认是开启的("true")。

int FLAG_IGNORE_CHEEK_PRESSES Window flag: intended for windows that will often be used when the user is holding the screen against their face, it will aggressively filter the event stream to prevent unintended presses in this situation that may not be desired for a particular window, when such an event stream is detected, the application will receive a CANCEL motion event to indicate this so applications can handle this accordingly by taking no action on the event until the finger is released.
int FLAG_KEEP_SCREEN_ON Window flag: as long as this window is visible to the user, keep the device's screen turned on and bright.
当该window对用户可见时,让设备屏幕处于高亮(bright)状态。
int FLAG_LAYOUT_INSET_DECOR Window flag: a special option only for use in combination with FLAG_LAYOUT_IN_SCREEN.
int FLAG_LAYOUT_IN_SCREEN Window flag: place the window within the entire screen, ignoring decorations around the border (a.k.a.
window占满整个手机屏幕,不留任何边界(border)
int FLAG_LAYOUT_NO_LIMITS Window flag: allow window to extend outside of the screen.
window大小不再不受手机屏幕大小限制,即window可能超出屏幕之外,这时部分内容在屏幕之外。
int FLAG_NOT_FOCUSABLE Window flag: this window won't ever get key input focus, so the user can not send key or other button events to it.
window不能获得焦点,这样用户快就不能向该window发送按键事件及按钮事件
int FLAG_NOT_TOUCHABLE Window flag: this window can never receive touch events.
让该window不接受触摸屏事件
int FLAG_NOT_TOUCH_MODAL Window flag: Even when this window is focusable (its @link #FLAG_NOT_FOCUSABLE is not set), 
allow any pointer events outside of the window to be sent to the windows behind it.
即使在该window在可获得焦点情况下,仍然把该window之外的任何event发送到该window之后的其他window.
int FLAG_SCALED Window flag: a special mode where the layout parameters are used to perform scaling of the surface when it is composited to the screen.
int FLAG_SECURE Window flag: don't allow screen shots while this window is displayed.
当该window在进行显示的时候,不允许截屏。
int FLAG_SHOW_WALLPAPER Window flag: ask that the system wallpaper be shown behind your window.
在该window后显示系统的墙纸(wallpaper)
int FLAG_SHOW_WHEN_LOCKED Window flag: special flag to let windows be shown when the screen is locked.
当锁屏的时候,显示该window.
int FLAG_SPLIT_TOUCH Window flag: when set the window will accept for touch events outside of its bounds to be sent to other windows that also support split touch. When this flag is not set, the first pointer that goes down determines the window to which all subsequent touches go until all pointers go up. When this flag is set, each pointer (not necessarily the first) that goes down determines the window to which all subsequent touches of that pointer will go until that pointer goes up thereby enabling touches with multiple pointers to be split across multiple windows
当该window在可以接受触摸屏情况下,让因在该window之外,而发送到后面的window的触摸屏可以支持split touch.
int FLAG_TOUCHABLE_WHEN_WAKING Window flag: When set, if the device is asleep when the touch screen is pressed, you will receive this first touch event.
当手机处于睡眠状态时,如果屏幕被按下,那么该window将第一个收到到事件
int FLAG_TURN_SCREEN_ON Window flag: when set as a window is being added or made visible, once the window has been shown then the system will poke the power manager's user activity (as if the user had woken up the device) to turn the screen on.
当然window被显示的时候,系统将把它当做一个用户活动事件,以点亮手机屏幕。
int FLAG_WATCH_OUTSIDE_TOUCH Window flag: if you have set FLAG_NOT_TOUCH_MODAL, you can set this flag to receive a single special MotionEvent with the action MotionEvent.ACTION_OUTSIDE 
for touches that occur outside of your window.
如果你设置了该flag,那么在你FLAG_NOT_TOUNCH_MODAL的情况下,即使触摸屏事件发送在该window之外,其事件被发送到了后面的window,那么该window仍然将以MotionEvent.ACTION_OUTSIDE形式收到该触摸屏事件
softInputMode系列 该系列主要用于表示softInputMode,我们可以通过WindowManager.LayoutParams的softInputMode变量直接进行设置。 softInputMode只能是一个显示软键盘时的window调整方式bite与一个控制软键盘显示状态的bite的组合。 显示软键盘时的window调整方式可以是 SOFT_INPUT_ADJUST_NOTHING SOFT_INPUT_ADJUST_PAN SOFT_INPUT_ADJUST_RESIZE SOFT_INPUT_ADJUST_UNSPECIFIED 之一。 用于描述软键盘显示的规则可以是 SOFT_INPUT_STATE_ALWAYS_HIDDEN SOFT_INPUT_STATE_ALWAYS_VISIBLE SOFT_INPUT_STATE_HIDDEN SOFT_INPUT_STATE_VISIBLE SOFT_INPUT_STATE_UNSPECIFIED 之一 关于softInputMode的更多知识请参考软件盘的开关》 所有的softInputMode系列常量如下:

int

SOFT_INPUT_ADJUST_NOTHING

Adjustment option for softInputMode:

set to have a window not adjust for a shown input method.
当显示软键盘时,不调整window的布局

int

SOFT_INPUT_ADJUST_PAN

 

              

Adjustment option for softInputMode: set to have a window

pan when an input method is shown, so it doesn't need to deal

with resizing but just panned by the framework to ensure the

current input focus is visible.
当显示软键盘时,调整window空白区域来显示软键盘。

即使调整空白区域,软键盘还是有可能遮挡一些有内容区域,

这时用户就只有退出软键盘才能看到这些被遮挡区域并进行交互。

 

                

int

SOFT_INPUT_ADJUST_RESIZE

Adjustment option for softInputMode: set to allow the window

to be resized when an input method is shown, so that its contents

are not covered by the input method.
当显示软键盘时,调整window内的控件大小以便显示软键盘。

这样的话控件可能会变形。

int

SOFT_INPUT_ADJUST_UNSPECIFIED

Adjustment option for softInputMode: nothing specified.
不指定显示软件盘时,window的调整方式。

int

SOFT_INPUT_IS_FORWARD_NAVIGATION

Bit for softInputMode: set when the user has navigated

forward to the window.
表示用户导航(navigate)到了你的window

int

SOFT_INPUT_MASK_ADJUST

Mask for softInputMode of the bits that determine the way that

the window should be adjusted to accommodate the soft input

window.
显示软键盘时,用于表示window调整方式的bitemask
显示软键盘时的window调整方式可以是

SOFT_INPUT_ADJUST_NOTHING

SOFT_INPUT_ADJUST_PAN

SOFT_INPUT_ADJUST_RESIZE

SOFT_INPUT_ADJUST_UNSPECIFIED
用于描述软键盘显示的规则可以是

SOFT_INPUT_STATE_ALWAYS_HIDDEN

SOFT_INPUT_STATE_ALWAYS_VISIBLE
SOFT_INPUT_STATE_HIDDEN

SOFT_INPUT_STATE_VISIBLE

SOFT_INPUT_STATE_UNSPECIFIED之一

int

SOFT_INPUT_MASK_STATE

Mask for softInputMode of the bits that determine the desired

visibility state of the soft input area for this window.
用于描述软键盘显示规则的bitemask.

int

SOFT_INPUT_MODE_CHANGED

用于表示softInputMode发生了变化。关于此的详细内容请看后文。

int

SOFT_INPUT_STATE_ALWAYS_HIDDEN

Visibility state for softInputMode
please always hide any soft input area when this window receives

focus.
总是隐藏软键盘。

int

SOFT_INPUT_STATE_ALWAYS_VISIBLE

Visibility state for softInputMode:
 please always make the soft input area visible when this window

receives input focus.
总是显示软键盘

int

SOFT_INPUT_STATE_HIDDEN

Visibility state for softInputMode
please hide any soft input area when normally appropriate (when

the user is navigating forward to your window).
用户导航(navigate)到你的窗口的时候,隐藏软键盘

int

SOFT_INPUT_STATE_UNCHANGED

Visibility state for softInputMode: please don't change the

state of the soft input area.

int

SOFT_INPUT_STATE_UNSPECIFIED

Visibility state for softInputMode: no state has been specified.
没有软键盘显示的约定规则

int

SOFT_INPUT_STATE_VISIBLE

Visibility state for softInputMode: please show the soft input

area when normally appropriate 
(when the user is navigating forward to your window).
用户导航(navigate)到你的窗口的时候,显示软键盘


Window type系列 该系列主要用于表示 window 的类型。我们可以通过 WindowManager.LayoutParams type 变量直接进行设置.
int TYPE_APPLICATION Window type: a normal application window.
普通的应用程序window,token必须设置为Activity的token,以指出该窗口属谁
int TYPE_APPLICATION_ATTACHED_DIALOG Window type: like TYPE_APPLICATION_PANEL, but layout of the window happens as that of a top-level window, not as a child of its container.
对话框。类似于面板窗口,绘制类似于顶层窗口,而不是宿主的子窗口。
int TYPE_APPLICATION_MEDIA Window type: window for showing media (e.g.
媒体窗口,例如视频。显示于宿主窗口下层。
int TYPE_APPLICATION_PANEL Window type: a panel on top of an application window.
面板窗口,显示于宿主窗口上层
int TYPE_APPLICATION_STARTING Window type: special application window that is displayed while the application is starting.
用于应用程序启动时所显示的窗口。应用本身不要使用这种类型。它用于让系统显示些信息,直到应用程序可以开启自己的窗口
int TYPE_APPLICATION_SUB_PANEL Window type: a sub-panel on top of an application window.
应用程序窗口的子面板。显示于所有面板窗口的上层。(GUI的一般规律,越“子”越靠上)
int TYPE_BASE_APPLICATION Window type: an application window that serves as the "base" window of the overall application; all other application windows will appear on top of it.
所有程序窗口的“基地”窗口,其他应用程序窗口都显示在它上面。 
int TYPE_CHANGED 表示window的类型发生了变化,关于此的详细内容请看后文。
int TYPE_INPUT_METHOD Window type: internal input methods windows, which appear above the normal UI.
内部输入法窗口,显示于普通UI之上。应用程序可重新布局以免被此窗口覆盖

(c)2006-2024 SYSTEM All Rights Reserved IT常识