Window.setFlags(int flags, int mask) 的意义

Window.setFlags方法用于设置窗口标志,flag参数指定要改变的目标目的值,mask参数用于设定要改变的目标原始值。通过两者的异或运算可以判断值是否发生变化。若值未变,则不需要进行布局更新;反之,若有变化则可能需要布局调整或重绘。此方法在处理窗口可见性变化时尤为重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Flag:标记位(要改变的目标的目的值)

Mask:原始位(要改变的目标的原来值)

使用这两个值, 不仅可以改变所需要的值还可以判断值是否有变化, 例如从gone到invisible  需要重新布局, 从visiable 到 invisible 就不需要布局只需要重绘

        int changed = mViewFlags ^ old;  = 0x0000000100    //异或 0 表示两个值相同,即没有变化  ;不同表示有变化值为1

        if (changed == 0) { 

            return; //hey ! 没有变化! 直接return!

        }





以window.setFlags 官方源码为例:


* @param flags The new window flags (see WindowManager.LayoutParams).
* @param mask Which of the window flag bits to modify.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值