以ViewGroup源码为例:
static final int FLAG_CLIP_CHILDREN = 0x1;
private static final int FLAG_CLIP_TO_PADDING = 0x2;
static final int FLAG_INVALIDATE_REQUIRED = 0x4;
private static final int FLAG_RUN_ANIMATION = 0x8;
static final int FLAG_ANIMATION_DONE = 0x10;
private static final int FLAG_PADDING_NOT_NULL = 0x20;
private static final int FLAG_ANIMATION_CACHE = 0x40;
static final int FLAG_OPTIMIZE_INVALIDATE = 0x80;
static final int FLAG_CLEAR_TRANSFORMATION = 0x100;
然后所有以上属性一起用一个int变量mGroupFlags标示,每一位记录一个属性的状态(0或1)
用16进制比较直观 你可以直接心算出来
第0位表示FLAG_CLIP_CHILDREN
第1位表示FLAG_CLIP_TO_PADDING
第2位表示FLAG_INVALIDATE_REQUIRED
第3位表示FLAG_RUN_ANIMATION
第4位表示FLAG_ANIMATION_DONE
....
....
写成10进制的话,计算哪一位表示哪一个变量会麻烦一些,看起来也很蛋疼