Android 의 상용 사이즈 단위(dp,sp)빠 른 입문 강좌
Android 개발 에서 자주 사용 되 는 사이즈 단 위 는 다음 과 같은 몇 가지 가 있 습 니 다.
다음은 dp 와 sp 두 가지 사이즈 단 위 를 상세 하 게 소개 합 니 다.
사이즈 단위 상세 설명 dp
dp 의 전 칭 은 device independent pixels 로 서로 다른 화면 밀 도 를 가 진 장치 에서 1dp 의 물리 적 크기 는 같다.그렇다면 화면 밀 도 는 무엇 일 까?
화면 밀도
휴대 전화의 화면 밀 도 는 일반적으로 휴대 전화 화면의 dpi(dots per inch),즉 인치 당 픽 셀 수 를 가리킨다.Android 휴대 전화 에서 흔히 볼 수 있 는 dpi 는 다음 과 같은 몇 가지 가 있 습 니 다.
private void getDpi() {
DisplayMetrics dm = getResources().getDisplayMetrics();
Log.i("TAG", "density = " + dm.density);
Log.i("TAG", "densityDpi = " + dm.densityDpi);
}
만약 에 우리 가 화면 밀도 가 320 dpi 인 Android 핸드폰 에서 상기 코드 를 실행 하면 다음 과 같은 출력 을 얻 을 수 있 습 니 다.
density = 2
densityDpi = 320
위 에서 출력 한 densityDpi 는 안 드 로 이 드 핸드폰 화면의 dpi 값 입 니 다.그러면 density 는 무엇 입 니까?실제 이것 은 현재 화면의 dpi 값 과 기준 dpi 값 의 비례 를 대표 하 는데 이 기준 dpi 값 은 160 이다.이제 dpi 를 이 해 했 으 니 dp 의 신비 한 베일 을 벗 겨 봅 시다.
dp
위 에서 dpi 값 160 을 기준 화면 밀도 로 선택 한 것 을 언급 했 습 니 다.이 기준 화면 밀 도 는 dp 와 px 간 의 관 계 를 만 들 었 습 니 다.dpi 가 160 인 Android 장치 에서 1dp=1px 입 니 다.x 가 특정한 UI 컨트롤 이 px 단위 의 크기 라 고 가정 하고 y 는 같은 UI 컨트롤 이 dp 단위 의 크기 이 며 densityDpi 는 화면 밀 도 를 나타 내 면 x 와 y 의 관 계 는 x=y*densityDpi/160 이다.
dp 를 소 개 했 습 니 다.다음은 sp 라 는 사이즈 단위 의 정 체 를 탐구 해 보 겠 습 니 다.
사이즈 단위
sp 를 소개 하기 전에 Typed Value 류 에 포 함 된 한 사용자 가 dp,sp 등 단 위 를 px 로 전환 하 는 정적 방법 을 살 펴 보 겠 습 니 다.
public static float applyDimension(int unit, float value,DisplayMetrics metrics) {
switch (unit) {
case COMPLEX_UNIT_PX:
return value;
case COMPLEX_UNIT_DIP:
return value * metrics.density;
case COMPLEX_UNIT_SP:
return value * metrics.scaledDensity;
case COMPLEX_UNIT_PT:
return value * metrics.xdpi * (1.0f/72);
case COMPLEX_UNIT_IN:
return value * metrics.xdpi;
case COMPLEX_UNIT_MM:
return value * metrics.xdpi * (1.0f/25.4f);
}
return 0;
}
dp 를 px 로 변환 하려 면 다음 코드 를 실행 합 니 다.
return value * metrics.density;
density 는 앞에서 소개 한 적 이 있 습 니 다.현재 dpi 와 기준 dpi(160)의 비율 을 말 합 니 다.density 의 계산 방식 은 현재 화면의 dpi 를 160 으로 나 누 는 것 입 니 다.즉,화면의 dpi 가 120,160,320,480 일 때 density 의 값 은 각각 0.75,1,2,3 이다.sp 를 px 로 변환 하려 면 다음 코드 를 실행 합 니 다.
return value * metrics.scaledDensity;
sp 가 px 로 전환 되 는 계산 공식 이 dp 가 px 로 전환 되 었 을 때 와 비슷 하 다 는 것 을 알 수 있 습 니 다.그러면 scaled Density 는 무엇 입 니까?실제로 scaledDensity 는 density 와 달리 scaledDensity 는 동적 으로 바 꿀 수 있 으 며,사용자 가 Android 장치 의 글꼴 크기 조정 비율 을 바 꾸 면 scaledDensity 의 값 이 달라 집 니 다.scaledDensity 의 계산 공식 은 scaledDensity=density*fontScale 이다.이 중 fontScale 은 사용자 가 설정 한 Android 장치 의 글꼴 크기 를 나타 내 며 기본 값 은 1 입 니 다.사용자 가 안 드 로 이 드 장치 의 글꼴 크기 조정 비율 을 바 꾸 지 않 았 을 때 sp,dp 와 px 의 환산 은 같다 는 것 이다.다 해상도 상처
시장 에 존재 하 는 다양한 해상도 의 안 드 로 이 드 설 비 는 많은 안 드 로 이 드 개발 자 들 에 게 많은 구 덩이 를 파 주 었 다.예 를 들 어:
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.