一直忽略这个基本技术。看Eclipse源码的时候经常发现用移位运算符定义常量。
来看看这是怎么用的吧 。
public static final int SELECTED = 1 << 1;
public static final int FOCUSED = 1 << 2;
public static final int BACKGROUND = 1 << 3;
public static final int FOREGROUND = 1 << 4;
public static final int HOT = 1 << 5;
用二进制和十进制分别表示为:
1 1
10 2
100 4
1000 8
10000 16
如果一个对象既处于SELECTED又处于FOCUSED状态,只需要把状态设置成11,然后进行或操作就可以了
setType(SELECTED | FOCUSED);
判断时:
如果需要判断是否selected,只需要if(type & SELECTED> 0)
来看看这是怎么用的吧 。
public static final int SELECTED = 1 << 1;
public static final int FOCUSED = 1 << 2;
public static final int BACKGROUND = 1 << 3;
public static final int FOREGROUND = 1 << 4;
public static final int HOT = 1 << 5;
用二进制和十进制分别表示为:
1 1
10 2
100 4
1000 8
10000 16
如果一个对象既处于SELECTED又处于FOCUSED状态,只需要把状态设置成11,然后进行或操作就可以了
setType(SELECTED | FOCUSED);
判断时:
如果需要判断是否selected,只需要if(type & SELECTED> 0)
如果需要判断是否focused,只需要if(type & FOCUSED> 0)
如果当前状态是SELECTED和FOCUSED,需要把SELECTED设成false,FOCUSED设成true该怎么办?
status = status & ~SELECTED 就可以。其中,~符号表示按位取反