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.