部分WindowManager.LayoutParams的Flag解释

  • FLAG_NOT_FOCUSABLE

此窗口永远不会获得按键输入焦点,因此用户无法向其发送按键或其他按钮事件。那些按钮事件会转到它后面的任何可聚焦窗口。 这个标志还将启用FLAG_NOT_TOUCH_MODAL,无论FLAG_NOT_TOUCH_MODAL是否被明确设置。
设置此标志还意味着该窗口将不需要与输入法进行交互,因此它将被Z轴排序并且独立于任何活动的输入法进行定位。(通常意味着位于输入法的上层,因此它可以使用完整的屏幕上显示其内容,并在需要时覆盖输入法。 您可以使用FLAG_ALT_FOCUSABLE_IM修改此行为。

  • FLAG_NOT_TOUCHABLE

这个窗口永远无法获取touch事件。

  • FLAG_NOT_TOUCH_MODAL

即使当前的窗口可聚焦(未设置FLAG_NOT_FOCUSABLE时),也允许将窗口外部的任何指针事件发送到其后面的窗口。 否则,无论指针事件是否在窗口内,窗口它自己都将消耗所有指针事件。

  • FLAG_WATCH_OUTSIDE_TOUCH

如果你已经设置了FLAG_NOT_TOUCH_MODAL,那么你可以设置FLAG_WATCH_OUTSIDE_TOUCH这个flag。这样一个点击事件如果发生在你的窗口之外的范围,你就会接收到一个特殊的MotionEvent:MotionEvent.ACTION_OUTSIDE。注意,你只会接收到点击事件的第一下,而之后的DOWN/MOVE/UP等手势全都不会接收到。

  • FLAG_SPLIT_TOUCH(感觉是分屏使用的)

设置后,窗口将接受超出其范围的、被发送到其他也支持分离触摸的窗口触摸事件。当这个flag没有设置的时候,第一下点击则决定了哪个窗口会接收整个点击事件,直到手指拿开为止。
当设置了这个flag时,每一个点击事件(不一定是第一个)都决定了那个窗口来接收剩下的点击事件,直到手指拿开为止,从而使多指触摸事件会被分开传递给多个窗口。

  • FLAG_LOCAL_FOCUS_MODE

此Flag用于本地聚焦模式的窗口。处于本地聚焦模式的窗口可以通过Window#setLocalFocus(boolean, boolean),独立于window manager去控制焦点。
通常这个模式下的窗口都不会从window manager接收触摸/按键事件,但仍可以通过使用Window#injectInputEvent(InputEvent)去进行变量本地注入去获取事件。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值