Refine getIndex and getType of InsetsSource
The methods used "%" to clear higher bits, but it wouldn't work if the integer is negative. This CLs uses "&" to clear bits that we don't want. Fix: 281709596 Test: atest InsetsSourceTest Change-Id: I845926f8b7d784d82b3f020736b478adf9482910
This commit is contained in:
@@ -293,16 +293,23 @@ public class InsetsSource implements Parcelable {
|
||||
* @see #createId(Object, int, int)
|
||||
*/
|
||||
public static int getIndex(int id) {
|
||||
return (id % (1 << 16)) >> 5;
|
||||
// start: ????????????????***********?????
|
||||
// & 65535: 0000000000000000***********?????
|
||||
// >> 5: 000000000000000000000***********
|
||||
return (id & 65535) >> 5;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the {@link InsetsType} from the ID.
|
||||
*
|
||||
* @see #createId(Object, int, int)
|
||||
* @see WindowInsets.Type#indexOf(int)
|
||||
*/
|
||||
public static int getType(int id) {
|
||||
return 1 << (id % 32);
|
||||
// start: ???????????????????????????*****
|
||||
// & 31: 000000000000000000000000000*****
|
||||
// 1 <<: See WindowInsets.Type#indexOf
|
||||
return 1 << (id & 31);
|
||||
}
|
||||
|
||||
public static String flagsToString(@Flags int flags) {
|
||||
|
||||
Reference in New Issue
Block a user