WindowManager.LayoutParams的各种flag含义

更新时间:2023-05-30 04:02:01 阅读: 评论:0

WindowManager.LayoutParams的各种flag含义
FLAG_ALLOW_LOCK_WHILE_SCREEN_ON
只要这个window对⽤户是可见的,则允许在屏幕开启的时候锁定屏幕这个flag可以单独的使⽤,也可以配合FLAG_KEEP_SCREEN_ON和(或者) FLAG_SHOW_WHEN_LOCKED使⽤
FLAG_DIM_BEHIND
所有在这个window之后的会变暗,使⽤dimAmount属性来控制变暗的程度(1.0不透明,0.0完全透明)什么颜色护眼
鼓励英语
FLAG_NOT_FOCUSABLE
设置之后window永远不会获取焦点,所以⽤户不能给此window发送点击事件焦点会传递给在其下⾯的可获取焦点的window这个flag同时会启⽤ FLAG_NOT_TOUCH_MODAL flag , 不管你有没有⼿动设置设置这个flag同时表明了这个window不会和软键盘交互,(这句话的翻译我不知道对不对)所以window会独⽴于激活的软键盘之上(这句话的意思就是window会在Z轴上置于输⼊法之上,所以window可以全屏使⽤来覆盖住输⼊法,你可以使⽤FLAG_ALT_FOCUSABLE_IM 来修改这个⾏为)
FLAG_NOT_TOUCHABLE
3月文案
这个window永远⽆法获取点击事件
FLAG_NOT_TOUCH_MODAL
即使这个window是可获取焦点的,也允许window之外点击事件传递给其他在其之后的indow
如果不设置这个值,则window消费掉所有点击事件,不管这些点击事件是不是在window的范围之内。//如果要做悬浮框,我想这个flag肯定得设置,但api>=23就别想了。这个flag简⽽⾔之就是说,当前window区域以外的点击事件传递给下层window,当前window区域以内的点击事件⾃⼰处理
FLAG_TOUCHABLE_WHEN_WAKING
当设置了这个值,则device休眠的时候,当触摸屏被点击,window会收到⾸次点击事件,通常当⽤户看不见东西时,⾸次点击事件会被系统消费
FLAG_KEEP_SCREEN_ON
当这个window对⽤户是可见状态,则保持设备屏幕不关闭且不变暗
FLAG_LAYOUT_IN_SCREEN
将window放置在整个屏幕之内,⽆视其他的装饰(⽐如状态栏)window要在考虑到屏幕的其他装饰来定位其中的内容这个flag通常使⽤Window类的tFlags(int, int)⽅法来设置
FLAG_LAYOUT_NO_LIMITS
允许window扩展值屏幕之外
FLAG_FULLSCREEN
怎么画柳树
当这个window显⽰的时候,隐藏所有的装饰物(⽐如状态栏)这个flag允许window使⽤整个屏幕区域当设置这个flag的window处于顶层的时候,状态栏会被隐藏全屏的时候会忽略 softInputMode 变量设置的SOFT_INPUT_ADJUST_RESIZE 效果,屏幕会不保持全屏且不会resize 这个flag可以在主题属性(theme)中来控制通过 windowFullscreen 属性来控制
在⼀些常⽤的全屏主题中这个属性已经被设置好了
常⽤全屏主题: Theme_NoTitleBar_Fullscreen,
健康名词解释Theme_Black_NoTitleBar_Fullscreen,
Theme_Light_NoTitleBar_Fullscreen,
Theme_Holo_NoActionBar_Fullscreen,
Theme_Holo_Light_NoActionBar_Fullscreen,
Theme_DeviceDefault_NoActionBar_Fullscreen,
Theme_DeviceDefault_Light_NoActionBar_Fullscreen.
FLAG_FORCE_NOT_FULLSCREEN
覆盖FLAG_FULLSCREEN效果,并强制显⽰屏幕上的⼀些装饰(如状态栏)
FLAG_SECURE
把这个window中的内容看作需要保护的内容,防⽌被截屏,或防⽌内容显⽰在⼀些不安全的屏幕上
FLAG_IGNORE_CHEEK_PRESSES
这个flag⼀般⽤于,当⽤户把脸贴在屏幕上,它会过滤不需要的点击事件,当检测到⼀个事件流,这个程序会直接接收到⼀个CANCEL事件.这样程序可以正确的处理这种情况,直到⼿指离开屏幕
FLAG_LAYOUT_INSET_DECOR
这个flag只能配合 FLAG_LAYOUT_IN_SCREEN ⼀起使⽤.当在屏幕中请求layout时,window可能在⼀些装饰物(如状态栏)之上或者之后当使⽤这个flag时,window manager会报告插⼊window的矩形⼤⼩,来确保你的内容不会被装饰物(如状态栏)掩盖.这个flag⼀般⽤Window类的 tFlags(int, int)⽅法来设置
FLAG_ALT_FOCUSABLE_IM
转变 FLAG_NOT_FOCUSABLE 设置的状态,关于这个window是怎么和当前的输⼊法交互
如果设置了FLAG_NOT_FOCUSABLE且FLAG_ALT_FOCUSABLE_IM也设置了,那么当这个window和input method交互的时候会被放置在input method后⾯或者旁边.如果FLAG_NOT_FOCUSABLE没有设置⽽设置了FLAG_ALT_FOCUSABLE_IM,那么window不需要和input method交互,可以放置在输⼊法上⾯
公元前221年
FLAG_WATCH_OUTSIDE_TOUCH
如果你已经设置了FLAG_NOT_TOUCH_MODAL,那么你可以设置FLAG_WATCH_OUTSIDE_TOUCH这个flag,这样⼀个点击事件如果发⽣在你的window之外的范围,你就会接收到⼀个特殊的MotionEvent,MotionEvent.ACTION_OUTSIDE注意,你只会接收到点击事件的第⼀下,⽽之后的DOWN/MOVE/UP等⼿势全都不会接收到
FLAG_SHOW_WHEN_LOCKED
⼀个特殊的flag,使得window可以在锁屏状态下显⽰,这个flag会使得window⽐keyguard或其他锁屏界⾯具有更⾼的层级可以配合
FLAG_KEEP_SCREEN_ON使⽤,点亮屏幕,在显⽰keyguard window之前显⽰你的window.可以配合FLAG_DISMISS_KEYGUARD使⽤来⾃动解锁没密码的keyguards这个flag只能应⽤在最顶层的全屏window上,⽤⼈话说就是可以让window显⽰在锁屏界⾯上
FLAG_TURN_SCREEN_ON
当window被添加或者显⽰,系统会点亮屏幕,就好像⽤户唤醒屏幕⼀样
FLAG_DISMISS_KEYGUARD
研究性当使⽤的是⽆密码的锁屏界⾯,显⽰此window会使锁屏界⾯被⾃动解锁,其他废话就不翻译了
FLAG_SPLIT_TOUCH
当window设置这个flag,window会接收来⾃window边界之外发送给其他window的点击事件,⽀持多点触
控.当这个flag没有设置的时候,第⼀下点击则决定了哪个window会接收整个点击事件,直到⼿指拿开.当设置了这个flag,这每⼀个点击事件(不⼀定是第⼀个)都决定了那个window来接收剩下的点击事件,直到⼿指拿开.点击事件会被分开传递给多个window.貌似是关于多点触控的
FLAG_HARDWARE_ACCELERATED
表⽰这个window是否启动硬件加速,请求硬件加速但不能保证硬件加速⽣效。如果仅是⽤来启动硬件加速,可以在代码中控制,使⽤下⾯的代码给指定window启动硬件加速:
Window w = Window(); // in Activity's onCreate() for instance
w.tFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
有⼀件很重要的事需要记住,这个flag需要在Activity和dialog添加view之前来配置。当你在manifest中设置了硬件加速后,这个flag不能⽤来取消硬件加速。当在Activity标签或者application标签中设置了 hardwareAccelerated = true属性这个flag就⾃动设置上了
FLAG_LOCAL_FOCUS_MODE
设置flag启⽤local focus模式(我也不知道local focus mode是什么),在这种模式下window可以不依赖windowmanager独⽴的控制焦点,使⽤window的 tLocalFocus(boolean, boolean) ⽅法即可通常在这种模式下,window不会通过windowmanager获取到touch/key event,但是会通过local injection(我不知道这是什么)得到event,by using injectInputEvent(InputEvent) ⽅法(貌似是⼿动的强⾏向⼀个window插⼊⼀个input event)
机床夹具FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
这个flag表⽰window负责绘制状态栏的北京当设置了这个flag,系统状态栏会变透明,同时这个相应的区域会被填满 getStatusBarColor() and getNavigationBarColor()的颜⾊

本文发布于:2023-05-30 04:02:01,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/949825.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:屏幕   点击   事件   设置   硬件加速   状态栏   时候   不会
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图