View 준비 사용자 정의: MeasureSpec 이해
4738 단어 Android
public class MeasureSpec {
/** 2 30 (int 32 ,
* 30 int 32 31 )
*/
private static final int MODE_SHIFT = 30;
/** ,0x3 16 ,10 3, 11。3 30, 11 00000000000(11 30 0)
*( 1 ,0 。 1 ,
*0 0)
*/
private static final int MODE_MASK = 0x3 << MODE_SHIFT;
// 0 30, 00 00000000000(00 30 0)
public static final int UNSPECIFIED = 0 << MODE_SHIFT;
// 1 30, 01 00000000000(01 30 0)
public static final int EXACTLY = 1 << MODE_SHIFT;
// 2 30, 10 00000000000(10 30 0)
public static final int AT_MOST = 2 << MODE_SHIFT;
/**
* size mode
* measureSpec = size + mode; ( : , 10 !)
* 32 ,32 31 mode , 30 size
* size=100(4),mode=AT_MOST, measureSpec=100+10000...00=10000..00100
*/
public static int makeMeasureSpec(int size, int mode) {
return size + mode;
}
/**
* mode
*mode = measureSpec & MODE_MASK;
*MODE_MASK = 11 00000000000(11 30 0),
* MODE_MASK 30 0 measureSpec 30 1, 32 31 mode 。
* 10 00..00100 & 11 00..00(11 30 0) = 10 00..00(AT_MOST), mode
*/
public static int getMode(int measureSpec) {
return (measureSpec & MODE_MASK);
}
/**
* size
*size = measureSpec & ~MODE_MASK;
* , MODE_MASK , 00 111111(00 30 1),
* 32,31 0 mode, 30 size
*/
public static int getSize(int measureSpec) {
return (measureSpec & ~MODE_MASK);
}
}
MeasureSpec은 부모 View가 하위 View에 전달하는 레이아웃 제약을 봉인합니다. 각각의 MeasureSpec는 너비와 높이의 요구를 대표합니다.MeasureSpec은 Size와 Mode 두 부분으로 구성되어 있습니다.그 중에서 Mode는 int 유형의 높은 위치(전 두 자리)가 존재하고 사이즈는 나머지 낮은 위치를 차지하며 MASK(마스크)를 통해 분리된다.그에 대응하는 방법은 getSize()와 getMode()이다.Mode: 모드: 모 뷰의 하위 뷰 구속으로 이해되는 Type: 세 가지가 있습니다. 1.UNSPECIFIED 부모는 자식에 대한 구속이 없습니다.서브는 임의의 크기(즉, 지정되지 않은 것)(UNSPECIFIED의 원본 처리는 EXACTLY와 같을 수 있습니다. 뷰의 너비 값이 0으로 설정되었거나 너비가 설정되지 않았을 때 모델은 UNSPECIFIED 2.EXACTLY 부모 결정자의 정확한 크기입니다. 서브는 지정된 경계에 한정되어 있고 정확한 것은(width 또는 height가 match parent 또는 고정된 값으로 설정된 경우 EXACTLY 모드) 3.AT_MOST 서브뷰는 최대 크기, 최대의 의미(wrap content로 설정할 때 AT MOST로 서브뷰의 크기가 얼마나 되는지를 나타낸다. 이view는 이 상한선에 따라 자신의 사이즈를 설정한다)를 이렇게 봉인하여 2진법과 조작을 이용하여 부뷰의 의도(mode, size)를 서브뷰에 전달한다.서브뷰는 특정 상황에 따라 측정됩니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.