px, dip, dp, sp의 차이점은 무엇입니까?
측정 단위 px, dip, dp 및 sp의 차이는 무엇입니까?
-
px
픽셀 - 화면의 실제 픽셀에 해당합니다. -
인치 - 화면의 실제 크기를 기준으로 합니다.
2.54cm -
> 밀리미터 - 화면의 물리적 크기에 기초합니다. -
.
> 포인트 - 화면의 물리적 크기에 따라 1/72 인치. -
dp 또는 dip
> 밀도에 의존하지 않는 픽셀 - 화면의 물리적 밀도를 기반으로 하는 추상 단위입니다.이러한 단위는 160dpi 화면에 상대적이므로 1dp는 160dpi 화면에 1픽셀입니다.dp 대 픽셀의 비율은 화면 밀도에 따라 변화하지만 반드시 정비례할 필요는 없습니다.주의: 컴파일러는 "dip"과 "dp"를 모두 사용할 수 있지만 "dp"가 "sp"와 더 일치합니다. -
> 스케일러블 픽셀ORscale에 의존하지 않는 픽셀 - 이는 dp 장치와 비슷하지만 사용자의 글꼴 크기 선호도에 따라 크기가 조정됩니다.글꼴 크기를 지정할 때 이 장치를 사용하는 것이 좋습니다. 따라서 화면 밀도와 사용자 취향에 맞게 글꼴 크기를 조정할 수 있습니다.주의: Android 문서는 다음 항목에 대해 일관성이 없습니다.sp
실제로는, 「스케일 인디펜던트 픽셀」이라고 하는 문서와 「스케일 가능한 픽셀」이라고 하는 문서를 나타냅니다.
Android에서의 밀도에 대한 독립성 이해:
밀도 버킷 | 화면 밀도 | 물리 사이즈 | 픽셀 사이즈 |
---|---|---|---|
ldpi | 120 dpi | 0.5 x 0.5 인치 | 0.5 in * 120 dpi = 60 x 60 px |
mdpi | 160 dpi | 0.5 x 0.5 인치 | 0.5 in * 160 dpi = 80 x 80 px |
hdpi | 240 dpi | 0.5 x 0.5 인치 | 0.5 in * 240 dpi = 120 x 120 px |
xhdpi | 320 dpi | 0.5 x 0.5 인치 | 0.5 in * 320 dpi = 160 x 160 px |
xxhdpi | 480 dpi | 0.5 x 0.5 인치 | 0.5 in * 480 dpi = 240 x 240 px |
xxxhdpi | 640 dpi | 0.5 x 0.5 인치 | 0.5 in * 640 dpi = 320 x 320 px |
구성 단위 | 묘사 | 물리 인치당 단위 수 | 밀도에 의존하지 않는가? | 모든 화면에서 동일한 물리적 크기? |
---|---|---|---|---|
px | 픽셀 | 다르다 | 아니요. | 아니요. |
에 | 인치 | 1 | 네. | 네. |
음. | 밀리미터 | 25.4 | 네. | 네. |
pt | 포인트 | 72 | 네. | 네. |
dp | 밀도에 의존하지 않는 픽셀 | ~160 | 네. | 아니요. |
sp | 독립 픽셀 축척 | ~160 | 네. | 아니요. |
자세한 내용은 Google Design Documentation에서도 확인할 수 있습니다.
이것에 관한 거의 모든 것 및 다양한 크기와 밀도의 여러 화면을 최적으로 지원하는 방법에 대해서는, 다음의 문서를 참조해 주세요.
★★★★
화면의 대각선으로 측정한 실제 물리적 크기입니다.Android는 모든 실제 화면 크기를 소형, 일반, 대형, 특대 등 4가지 일반 크기로 그룹화합니다.★★★★
화면의 물리적 영역 내의 픽셀 수. 보통 dpi(인치당 도트 수)라고 합니다.예를 들어, "저밀도" 화면은 "일반" 또는 "고밀도" 화면에 비해 주어진 물리적 영역 내에서 픽셀 수가 적습니다.Android는 모든 실제 화면 밀도를 6개의 일반화된 밀도(낮음, 중간, 높음, 높음, 높음, 높음, 높음, 높음, 높음, 높음)로 그룹화합니다.
이치노가로 또는 세로입니다. 즉, 화면의 가로 세로 비율이 각각 넓거나 높음을 의미합니다.기본적으로는 서로 다른 방향으로 작동할 뿐만 아니라 사용자가 장치를 회전할 때 방향이 변경될 수 있습니다.
★★★★★
츠요시복수의 화면을 서포트하는 경우는, 애플리케이션이 해상도로 직접 동작하는 것은 아닙니다.어플리케이션은, 일반적인 사이즈와 밀도 그룹에 의해서 지정된 화면 사이즈와 밀도만을 고려해야 합니다.
하지 않는 픽셀입니다.
UI 레이아웃을 정의할 때 밀도에 구애받지 않는 방식으로 레이아웃 치수 또는 위치를 표현하기 위해 사용해야 하는 가상 픽셀 단위입니다.밀도에 의존하지 않는 픽셀은 160dpi 화면의 1개의 물리 픽셀에 해당합니다.이것은, 시스템이 「중간」의 밀도 화면에서 상정하고 있는 베이스라인 밀도입니다.실행 시 시스템은 사용 중인 화면의 실제 밀도에 따라 필요에 따라 dp 유닛의 스케일링을 투명하게 처리합니다.dp 위 、 dp 、 단 、 the is 、 is is is is is 。px = dp * (dpi / 160)
240dpi, 1dp, 1.5 dpi, 1dp, 1.5 dpi.프로그램의 UI를 정의할 때는 밀도가 다른 화면에 UI를 올바르게 표시하기 위해 항상 dp 단위를 사용해야 합니다.
Android 앱의 개발에 진지하게 임하고 있다면, 화면 지원 개발 문서를 한 번쯤 읽어보아야 합니다.게다가 특정의 화면 구성을 가지는 액티브한 디바이스의 실제의 수를 아는 것은, 항상 좋은 일입니다.
dp를 px로 변환하는 방법에 대해 자세히 설명하겠습니다.
- 하고 있는 는, mdpi 「」를 해 주세요.
150 x 150 px
가150 * 150 dp
의 화면 공간입니다. - 하고 있는 , hdpi 에서 동작하고 있는 경우,
150 x 150 px
가100 * 100 dp
의 화면 공간입니다. - 중인 xhdpi는
150x150 px
가75 * 75 dp
의 화면 공간입니다.
예를 들면, 「」, 「」, 「」, 「」, 「」, 「」, 「」를 채우기 , 「」의에 추가하고 하는 경우입니다.100 * 100 dp
화면 크기에 다른 지원되는 화면 크기에 따라 다른 크기의 이미지를 생성해야 합니다.
100 * 100 px
150 * 150 px
200 * 200 px
이미지
또, 다음의 개념을 명확하게 이해할 필요가 있습니다.
화면 크기:
화면의 대각선으로 측정한 실제 물리적 크기입니다.Android는 모든 실제 화면 크기를 소형, 일반, 대형, 특대 등 4가지 일반 크기로 그룹화합니다.
화면 밀도:
화면의 물리적 영역 내의 픽셀 수. 보통 dpi(인치당 도트 수)라고 합니다.예를 들어, "저밀도" 화면은 "일반" 또는 "고밀도" 화면에 비해 주어진 물리적 영역 내에서 픽셀 수가 적습니다.Android는 모든 실제 화면 밀도를 Low, Medium, High 및 Extra High의 4가지 일반화된 밀도로 그룹화합니다.
방향:
사용자의 관점에서 본 화면 방향입니다.가로 또는 세로입니다. 즉, 화면의 가로 세로 비율이 각각 넓거나 높음을 의미합니다.기본적으로는 서로 다른 방향으로 작동할 뿐만 아니라 사용자가 장치를 회전할 때 방향이 변경될 수 있습니다.
해상도:
화면상의 물리 픽셀의 합계수.복수의 화면을 서포트하는 경우는, 애플리케이션이 해상도로 직접 동작하는 것은 아닙니다.어플리케이션은, 일반적인 사이즈와 밀도 그룹에 의해서 지정된 화면 사이즈와 밀도만을 고려해야 합니다.
밀도에 의존하지 않는 픽셀(dp):
UI 레이아웃을 정의할 때 밀도에 구애받지 않는 방식으로 레이아웃 치수 또는 위치를 표현하기 위해 사용해야 하는 가상 픽셀 단위입니다.밀도에 의존하지 않는 픽셀은 160dpi 화면의 1개의 물리 픽셀에 해당합니다.이것은, 시스템이 「중간」의 밀도 화면에서 상정하고 있는 베이스라인 밀도입니다.실행 시 시스템은 사용 중인 화면의 실제 밀도에 따라 필요에 따라 dp 유닛의 스케일링을 투명하게 처리합니다.dp 단위를 화면 픽셀로 변환하는 방법은 간단합니다. px = dp * (dpi / 160).예를 들어 240dpi 화면에서 1dp는 1.5개의 물리적 픽셀과 같습니다.프로그램의 UI를 정의할 때는 밀도가 다른 화면에 UI를 올바르게 표시하기 위해 항상 dp 단위를 사용해야 합니다.
레퍼런스:안드로이드 개발자 사이트
dp
dip
·모든 것(마진, 패딩 등)에 사용합니다.
sp
{text-size}입니다.
다른 화면 밀도에서 동일한 크기를 얻기 위해 Android는 실행 시 이러한 단위를 픽셀로 변환하므로 사용자가 까다로운 계산을 수행할 필요가 없습니다.
「」의 를 .px
,dp
★★★★★★★★★★★★★★★★★」sp
하다
출처: Android 프로그래밍: Big Nerd 목장 가이드
정의들
px 또는 도트는 물리화면의 픽셀입니다.
dpi는 물리 화면의 인치당 픽셀로 디스플레이 밀도를 나타냅니다.
- ldpi(낮음)~120dpi
- mdpi(중간)~160dpi
- hdpi(표준)~240dpi
- 2015년 대부분의 디바이스는 여기에 있습니다.
- xhdpi(표준)~320dpi
- Apple iPhone 4/5/6, Nexus 4
- xxhdpi(xxhdpi~hxdpi)~hdpi
- 넥서스 5
- xxxhdpi (140-high)~140dpi
dip 또는 dp는 밀도에 의존하지 않는 픽셀로 물리적 밀도에 따라 많거나 적은 픽셀에 해당합니다.
- mdpi에서는 1dp = 1px
sp 또는 sip은 축척에 의존하지 않는 픽셀입니다.>에서 [Large Text]옵션을 켜면 크기가 조정됩니다.
- 1sp = 1dp
- 1sp = 1.2dp (액세스 용이성 포함)큰 텍스트
뭘 쓸까?
텍스트 크기에 sp를 사용합니다.
다른 모든 것에는 dp를 사용합니다.
해 보았습니다.dpi
로로 합니다.dp
★★★★★★★★★★★★★★★★★」sp
소스 3: (소스 3으로부터의 데이터는 다음과 같습니다)
XML에서 정의된 차원 값입니다. 차원은 숫자 뒤에 측정 단위를 사용하여 지정됩니다.예를 들어 10px, 2in, 5sp입니다.Android에서 지원되는 측정 단위는 다음과 같습니다.
dp
밀도에 의존하지 않는 픽셀 - 화면의 물리적 밀도를 기반으로 하는 추상 단위입니다.이러한 단위는 160dpi(인치당 도트 수) 화면에 상대적이며, 1dp는 대략 1px와 동일합니다.고밀도 화면에서 실행할 경우 1dp를 그리는 데 사용되는 픽셀 수는 화면의 dpi에 적합한 계수만큼 증가합니다.마찬가지로 밀도가 낮은 화면에서는 1dp에 사용되는 픽셀 수가 줄어듭니다.dp 대 픽셀의 비율은 화면 밀도에 따라 변화하지만 반드시 정비례할 필요는 없습니다.(px 유닛 대신) dp 유닛을 사용하면 레이아웃의 뷰 치수를 화면 밀도에 따라 적절하게 조정할 수 있습니다.즉, 여러 디바이스에서 UI 요소의 실제 크기를 일관되게 유지할 수 있습니다.
sp
축척에 의존하지 않는 픽셀 - 이것은 dp 단위와 비슷하지만 사용자의 글꼴 크기 선호도에 따라 크기가 조정됩니다.글꼴 크기를 지정할 때 이 장치를 사용하는 것이 좋습니다. 따라서 화면 밀도와 사용자 기본 설정 모두에 맞게 글꼴 크기를 조정할 수 있습니다.
pt
포인트 - 화면의 물리적 크기에 따른 1/72인치.
px
픽셀 - 화면의 실제 픽셀에 해당합니다.이 측정 단위는 디바이스마다 실제 표시가 다를 수 있으므로 권장하지 않습니다.각 디바이스는 인치당 픽셀 수가 다를 수 있으며 화면에 표시되는 총 픽셀 수가 많거나 적을 수 있습니다.
음.
밀리미터 - 화면의 물리적 크기에 기반합니다.
에
인치 - 화면의 실제 크기를 기준으로 합니다.
참고: 차원은 XML 파일의 이름이 아닌 이름 속성에 지정된 값을 사용하여 참조되는 단순한 리소스입니다.따라서 하나의 XML 파일에서 하나의 요소 아래에 차원 리소스를 다른 단순 리소스와 결합할 수 있습니다.
기본적으로 px가 적용되는 유일한 시간은 1px이며, 이는 분할기의 경우와 같이 화면에 정확히 1개의 픽셀을 원하는 경우입니다.
160dpi를 넘으면 2~3픽셀이 나올 수 있습니다.
120 dpi를 넘으면 0으로 반올림합니다.
px와 dp의 관계와 사용처는?
밀도에 의존하지 않는 픽셀(dp)
UI 레이아웃을 정의할 때 밀도에 구애받지 않는 방식으로 레이아웃 치수 또는 위치를 표현하기 위해 사용해야 하는 가상 픽셀 단위입니다.위에서 설명한 바와 같이 밀도에 의존하지 않는 픽셀은 160dpi 화면상의 1개의 물리 픽셀에 해당합니다.이것은, 시스템이 「중간」의 밀도 화면을 상정하고 있는 베이스의 밀도입니다.실행 시 시스템은 사용 중인 화면의 실제 밀도에 따라 필요에 따라 dp 유닛의 스케일링을 투명하게 처리합니다.dp 단위를 화면 픽셀로 변환하는 방법은 간단합니다.
px = dp * (dpi / 160).
예를 들어 240dpi 화면에서 1dp는 1.5개의 물리적 픽셀과 같습니다.프로그램의 UI를 정의할 때는 밀도가 다른 화면에 UI를 올바르게 표시하기 위해 항상 dp 단위를 사용해야 합니다.
픽셀을 dp 또는 그 반대로 이해하는 것은 매우 중요합니다(특히 크리에이티브 팀에 정확한 dp 값을 제공하기 위해).
dp = px * 160 / dpi
MDPI = 160 dpi || Therefore, on MDPI 1 px = 1 dp
For example, if you want to convert 20 pixel to dp, use the above formula,
dp = 20 * 160 / 160 = 20.
So, 20 pixel = 20 dp.
HDPI = 240 dpi - So, on HDPI 1.5 px = 1 dp
XHDPI = 320 dpi - So, on XHDPI 2 px = 1 dp
XXHDPI = 480 dpi - So, on XXHDPI 3 px = 1 dp
For example, let us consider Nexus 4.
If 24 pixels to be converted to dp and if it is a Nexus 4 screen, developers can
convert it to dp easily by the following calculation :
dp = 24 * 160 / 320 = 12 dp
Screen dimension:
768 x 1280 pixel resolution (320 ppi or 320dpi)
Optional (screen size):
4.7" diagonal
- 크리에이티브 팀으로부터 모든 픽셀 값을 짝수로 가져오도록 합니다.그렇지 않으면 0.5를 곱하는 동안 정밀도가 손실됩니다.
px
위에서 설명한 바와 같습니다.레이아웃 파일에서는 사용하지 않도록 합니다.단, px가 필요한 경우도 있습니다.예를 들어 List View 구분선입니다.여기서 px는 모든 화면 해상도의 구분선으로서 1자 라인을 지정하는 것이 좋습니다.
sp
글꼴 크기에는 sp를 사용합니다.디바이스 폰트 사이즈가 변경되는 동안 어플리케이션 내의 폰트만 변경됩니다(즉, [Display]-> [ Fonts on Device ]).앱 내부에 정적 크기의 글꼴을 유지하고 싶다면 글꼴 크기를 dp로 지정할 수 있습니다.이 경우, 그것은 결코 변하지 않습니다.개발자는 일부 특정 화면에 대해 이러한 요구사항을 얻을 수 있습니다. 따라서 개발자는 sp 대신 dp를 사용할 수 있습니다.다른 모든 경우에는 sp가 권장됩니다.
이 두 가지 차이점이 보이시죠?px
★★★★★★★★★★★★★★★★★」dp
에서 볼 수 , 이 에서 볼 수 .★★★★★★★★★★★★★★★★★★,px
★★★★★★★★★★★★★★★★★」dp
다른 화면에서 동일한 물리적 크기를 보장할 수 없습니다.
텍스트 크기 및 모양과 관련된 모든 항목은 다음을 사용해야 합니다.sp
★★★★★★★★★★★★★★★★★」pt
., must, must, must, must, must, must, must, must, must, must, must, must, must, , must, must, must, must, must, must, must, must, must 등과 함께 사용해야 합니다.dp
.
다 쓸 수요.dp
★★★★★★★★★★★★★★★★★」dip
그 장소에서.
dp만 사용하겠습니다.
폰트 사이즈에 「sp」를 사용하는 것에 대해서는 많은 이야기가 있습니다만, 그 점은 높이 평가하지만, 디자인적인 관점에서는 적절하지 않다고 생각합니다.만약 사용자가 원키 폰트 사이즈를 선택했다면, 사용자는 결국 자신의 인생 선택이 아닌 앱 탓을 하게 될 것이다.
또한 160dpi 태블릿에서 sp-font 앱을 사용하면 모든 것이 확장된다는 것을 알 수 있습니다.네 폰트는 작아 보일 거야보기 안 좋아요.
"sp" 글꼴에 대한 아이디어는 좋은 마음을 가지고 있지만, 그것은 좋지 않은 생각입니다.무슨 일이든 dp와 함께 있어.
sp = 스케일 독립 픽셀
dp = 딥 = 밀도에 의존하지 않는 픽셀
dpi = 인치당 도트 수
sp를 사용하지 않도록 해야 합니다.
여러 화면을 지원하려면 dp를 사용해야 합니다.
Android는 다양한 화면 해상도를 지원합니다.
- ldpi(낮음)~120 dpi
- mdpi (중간)~160 dpi
- hdpi(높음)~240 dpi
- xhdpi(최고치)~320dpi
- xxhdpi(하이~하이)~125 dpi
- xxxhdpi(sq-sq-high)~sqdpi
120 dp ldpi 디바이스는 1인치 크기의 120픽셀을 가지고 있습니다.
다른 밀도에서도 마찬가지...
소프트웨어 엔지니어는 다음 변환식을 사용해야 합니다.
픽셀 = dp * (밀도 / 160)
따라서 240dpi 장치의 1dp는 = 1 * (240/160) = 3/2 = 1.5픽셀이 됩니다.
또한 480dpi 장치의 1dp는 = 1 * (160) = 3픽셀이 됩니다.
이 1.5픽셀과 3픽셀의 지식을 사용하여 소프트웨어 엔지니어는 다양한 밀도로 레이아웃을 설계할 수 있습니다.
장치의 화면 매개 변수를 확인하려면:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
Toast.makeText(
this,
"4:" + metrics.heightPixels + "," + metrics.density + ","
+ metrics.densityDpi, Toast.LENGTH_LONG).show();
★★★의 차이dp
★★★★★★★★★★★★★★★★★」sp
공식 문서에서 복사한 답변에 의해 "사용자의 글꼴 크기 기본 설정"으로 언급된 단위는 실행 시 변경함으로써 볼 수 있습니다.Settings->Accessibility->Large Text
★★★★★★ 。
Large Text
을 지정하면 로 """로 설정됩니다.1.3
아, 아, 아, 아, 아, 아, 아, 네.
private static final float LARGE_FONT_SCALE = 1.3f;
패키지/앱/설정에 있으므로 당연히 벤더에 의존할 수 있습니다.
dpi -
- 인치당 도트 수
- 화면의 픽셀 밀도를 측정합니다.
px - 픽셀
- 화면 픽셀 매핑용
pt - 포인트
- 물리적인 화면 크기에 관해서는 약 1/72인치입니다.
-인치 단위 - 물리적 화면 크기(1인치 = 2.54cm).
mm-mm - 물리적 화면 크기에 대한 것입니다.
sp - 축척에 의존하지 않는 픽셀.
- 사용자의 글꼴 크기 선호도에 따라 달라집니다.
- 글꼴은 'sp'에 있어야 합니다.
딥 -
- 딥 == dp
- 밀도에 의존하지 않는 픽셀.
- 화면 밀도에 따라 다릅니다.
- 160dpi 화면에서 1dp = 1픽셀입니다.
- 텍스트 글꼴 크기를 제외하고 dp를 사용합니다.
표준에서는 dp와 sp가 사용됩니다.글꼴 크기에는 sp가 사용되고 그 외 모든 것은 dp가 사용됩니다.
단위 변환 공식:
px = dp * ( dpi / 160 );
Density Bucket -> Screen Display => Physical Size => Pixel Size
ldpi -> 120 dpi => 0.5 x 0.5 in => 0.5 in * 120 dpi = 60x60 px
mdpi -> 160 dpi => 0.5 x 0.5 in => 0.5 in * 160 dpi = 80x80 px
hdpi -> 240 dpi => 0.5 x 0.5 in => 0.5 in * 240 dpi = 120x120 px
xhdpi -> 320 dpi => 0.5 x 0.5 in => 0.5 in * 320 dpi = 160x160 px
xxhdpi -> 480 dpi => 0.5 x 0.5 in => 0.5 in * 480 dpi = 240x240 px
xxxhdpi -> 640 dpi => 0.5 x 0.5 in => 0.5 in * 640 dpi = 320x320 px
커뮤니티 위키에서 답변을 읽어주세요.아래는 상기 답변 외에 고려해야 할 몇 가지 정보입니다.대부분의 Android 개발자가 앱을 개발하면서 놓치기 때문에, 이러한 점을 덧붙입니다.
sp = 스케일 독립 픽셀
dp = 밀도 독립적인 픽셀
dpi = 밀도 픽셀
위의 답변들을 살펴봤지만, 정확히 정답을 찾을 수 없었습니다. 텍스트 크기는 sp, 레이아웃 경계는 dp - standard.그러나 대부분의 기기에서 부주의하게 사용하면 텍스트 크기를 나타내는 sp가 레이아웃이 깨집니다.
sp는 디바이스의 텍스트사이즈를 가져가는 반면 dp는 디바이스 밀도표준(디바이스에서는 변경되지 않음) 100sp 텍스트는 디바이스에 설정된 글꼴사이즈에 따라 화면의 80% 또는 100%를 차지할 수 있습니다.
레이아웃 경계에도 sp를 사용할 수 있습니다.기능합니다:) 표준 앱은 텍스트 전체에 sp를 사용하지 않습니다.
UX를 고려한 텍스트 크기에는 sp와 dp를 사용합니다.
- 툴바의 텍스트에 sp를 사용하지 않는다(dp에서는 다양한 화면 크기에 사용할 수 있는 Android 디멘을 사용할 수 있다.
- 작은 경계 단추나 매우 작은 텍스트 등에 sp를 사용하지 마십시오.
가독성을 높이기 위해 폰트 사이즈가 큰 폰트를 사용하는 사람도 있기 때문에, 작은 하드 코드 사이즈의 텍스트를 사용하는 것은 UX의 문제가 됩니다.필요한 경우 텍스트에 sp를 넣지만 사용자가 설정을 변경할 때 레이아웃이 깨지지 않도록 하십시오.
마찬가지로 모든 차원을 지원하는 단일 앱이 있는 경우 xxxhdpi 자산을 추가하면 앱 크기가 크게 증가합니다.그러나 현재 xxxhdpi 전화기는 일반적이기 때문에 적어도 사이드바, 툴바 및 하단 바의 아이콘에 xxxhdpi 자산을 포함해야 합니다.벡터 이미지로 이동하여 모든 화면 크기에 대해 균일하고 고품질의 이미지를 만드는 것이 좋습니다.
또, 전화기에 커스텀 폰트를 사용하고 있는 것에 주의해 주세요.그래서 글꼴이 부족하면 띄어쓰기 등의 문제가 발생할 수 있습니다.커스텀 폰트의 텍스트사이즈 12sp는 디폴트 폰트보다 몇 개의 픽셀이 더 필요할 수 있습니다.
Android의 화면 밀도 및 기본 밀도에 대한 자세한 내용은 Google 개발자 사이트를 참조하십시오.https://developer.android.com/training/multiscreen/screendensities
화면 크기(단위)Android
로 분류하다small
,medium
,large
,extra large
,double-extra
★★★★★★★★★★★★★★★★★」triple-extra
. 화면 밀도는 화면의 1인치 영역 내의 픽셀 수입니다.dpi를 사용하다화면 밀도는 낮음, 중간, 높음 및 매우 높음으로 그룹화됩니다.해상도는 화면의 총 픽셀 수입니다.
- dp: 밀도에 의존하지 않는 픽셀. 화면 밀도에 따라 다릅니다.160dpi 화면에서 1dp = 1픽셀입니다.글꼴 크기를 제외하고 항상 dp를 사용합니다.
- 딥: 딥 == dp.이전 Android 버전에서는 dip이 사용되었고 나중에 dp로 변경되었습니다.
- sp: 사용자의 글꼴 크기 선호도에 따라 크기를 조정하여 독립 픽셀을 조정합니다.글꼴은 sp를 사용해야 합니다.
- px: 스크린 픽셀에 매핑되는 일반적인 표준 픽셀.
- 인치(물리 화면 크기에 관한 것).
- mm: 밀리미터(물리 화면 크기에 관한 것).
- pt: 1/72인치 (물리 화면 크기에 대하여)
단위 간 변환 공식
px = dp * (dpi / 160)
디바이스의 dp to px
다음 예는 더 잘 이해하는 데 도움이 될 수 있습니다.스케일링은 버킷사이즈 120(ldpi), 160(mdpi), 240(hdpi), 320(xhdpi), 480(xxhdpi), 640(xxhdpi)에 근거해 실행됩니다.구글이 제안하는 설계 비율은 ldpi:mdpi:hdpi:xhdpi:xxhdpi에 대해 3:4:6:8:12 입니다.
150pxX150px 이미지가 점유됩니다.
- 150 dp x 150 dp 화면 공간 (mdpi)
- 100 dp x 100 dp 화면 공간(hdpi)
- 75 dp x 75 dp 화면 공간 (xhdpi)
모든 Android 기기에서 동일한 UI 디자인을 원하는 경우 다음 DPI 계산기를 사용하여 이미지 크기 및 기타 치수를 수정할 수 있습니다.
Java에서의 DPI 계산기
/*
Program output
LDPI: 165.0 X 60.0
MDPI: 220.0 X 80.0
HDPI: 330.0 X 120.0
XHDPI: 440.0 X 160.0
XXHDPI: 660.0 X 240.0
XXXHDPI: 880.0 X 320.0
*/
public class DPICalculator {
private final float LDPI = 120;
private final float MDPI = 160;
private final float HDPI = 240;
private final float XHDPI = 320;
private final float XXHDPI = 480;
private final float XXXHDPI = 640;
private float forDeviceDensity;
private float width;
private float height;
public DPICalculator(float forDeviceDensity, float width, float height){
this.forDeviceDensity = forDeviceDensity;
this.width = width;
this.height = height;
}
public static void main(String... args) {
DPICalculator dpiCalculator = new DPICalculator(240,330,120);
dpiCalculator.calculateDPI();
}
private float getPx(float dp, float value) {
float px = dp * (value / forDeviceDensity );
return px;
}
private void calculateDPI() {
float ldpiW = getPx(LDPI,width);
float ldpiH = getPx(LDPI,height);
float mdpiW = getPx(MDPI,width);
float mdpiH = getPx(MDPI,height);
float hdpiW = getPx(HDPI,width);
float hdpiH = getPx(HDPI,height);
float xdpiW = getPx(XHDPI,width);
float xdpiH = getPx(XHDPI,height);
float xxdpiW = getPx(XXHDPI,width);
float xxdpiH = getPx(XXHDPI,height);
float xxxdpiW = getPx(XXXHDPI,width);
float xxxdpiH = getPx(XXXHDPI,height);
System.out.println("LDPI: " + ldpiW + " X " + ldpiH);
System.out.println("MDPI: " + mdpiW + " X " + mdpiH);
System.out.println("HDPI: " + hdpiW + " X " + hdpiH);
System.out.println("XHDPI: " + xdpiW + " X " + xdpiH);
System.out.println("XXHDPI: " + xxdpiW + " X " + xxdpiH);
System.out.println("XXXHDPI: " + xxxdpiW + " X " + xxxdpiH);
}
}
자세한 내용은 다음 링크를 참조하십시오.
http://javapapers.com/android/difference-between-dp-dip-sp-px-in-mm-pt-in-android/
Android에서 사용되는 공식은 다음과 같습니다.
px = dp * (dpi / 160)
여기서 dpi는 다음 화면 밀도 중 하나입니다.가능한 모든 밀도 목록은 여기를 참조하십시오.
"DECTION_*" 상수를 정의합니다.
- ldpi(낮음)~120dpi
- mdpi(중간)~160dpi
- hdpi(높음)~240 dpi
- xhdpi(최고)~320dpi
- xxhdpi(하이~하이)~440dpi
- xxxhdpi (140-high)~140dpi
여기서부터 가져갑니다.
화면 dpi를 알고 있으면 px와 dp를 번역할 때 많은 혼동을 해소할 수 있습니다.
예를 들어 hdpi 화면에 대해 60dp의 이미지를 만들고 60dp의 물리적 픽셀 크기는 다음과 같습니다.
px = 60 * (240 / 160)
- px - CSS, JavaScript 등에서 사용되는 것과 동일한 1픽셀.
- sp - 축척에 의존하지 않는 픽셀
- 딥 - 밀도에 의존하지 않는 픽셀
보통 글꼴 크기에는 sp가 사용되고 다른 글꼴 크기에는 dip이 사용됩니다(dp라고도 함).
Android 앱 UI를 다양한 화면 해상도에 맞게 디자인한다는 좋은 기사를 접했는데, 이 영역에서 검색하시는 분들을 위해 남겨두고 싶습니다.네, 구글 문서(위 게시물에도 기재되어 있습니다)에 기재되어 있는 것을 알고 있습니다.읽어봤지만 저에게 좋지 않았습니다(네, 제가 너무 멍청할 수도 있습니다).다양한 화면 크기에 대응할 수 있는 레이아웃을 설계하는 방법은 아직 불분명했습니다.화면마다 "유연한" UI 레이아웃을 구현해야 할 때 DP 개념 등이 마음에 들지 않습니다.(iOS 개발자 여러분, 스토리보드 컨셉입니다.)
Android는 UI 콘셉트는 나쁘지 않지만 iOS 스토리보드 기능은 부족합니다.Android에서 유연한 UI를 설계하는 것은 쉬운 일이 아닙니다.
다음은 Android에서 다양한 화면 크기에 맞게 레이아웃을 작성하기 위해 무엇을 해야 하는지 이해하는 데 도움이 되는 기사입니다.
JMSTUDIO 블로그:- Android 앱 화면 크기 결정
다양한 화면 크기에 맞게 Android 앱용 UI를 설계하는 방법
다양한 화면 크기에 맞게 앱 UI를 설계하려면 초기 디자인이 각 화면 크기에 필요한 최소 공간을 충족해야 합니다.Android는 각 일반 화면 유형에 대한 최소 크기(dp)를 정의합니다.여기 안드로이드 화면 크기 가이드라인이 있습니다.
화면 크기를 dp로 받으면 안드로이드 앱 UI를 디자인하는 것만으로는 부족합니다.화면 크기별로 그래픽과 비트맵 이미지를 밀도별로 준비해야 합니다.여기 Android 화면 밀도 가이드라인이 있습니다.
쉽게 계산할 수 있도록 4개의 일반화 밀도 사이의 3:4:6:8 스케일 비율을 따를 수 있습니다.ldpi 디바이스용으로 36×36픽셀의 화상을 작성하면, 나머지 밀도의 사진의 사이즈는 mdpi는 48×48, hdpi는 72×72, xhdpi는 96×96이 됩니다.
Photoshop에서 Android 앱 UI를 디자인하는 방법
많은 디자이너들이 밀도에 의존하지 않는 단위인 dp 때문에 포토샵이나 다른 픽셀 기반의 그래픽 디자인 도구로 Android 앱 UI를 설계하는 데 어려움을 겪고 있습니다.디자이너는 dp를 픽셀에 매핑하는 방법을 모릅니다.구글은 또한 dp와 픽셀 번역에 대한 기본적인 공식을 제공하지만 명확한 안드로이드 UI 디자인 가이드를 제공하지 않는다.
안드로이드의 정의대로 1pd는 160dpi 디바이스(mdpi)에서 1px와 같다.따라서 우리는 mdpi 밀도의 초대형 Android 장치용 Android 앱을 설계하고자 합니다. 픽셀 단위로 UI 크기를 가로 960픽셀, 세로 720px로 정의할 수 있습니다. 동일한 매핑 규칙에 따라 다음과 같은 Android 앱 화면 크기 UI 설계 지침을 얻을 수 있습니다.
추가: "유연한" UI에 관심이 있다면 이 라이브러리를 참조하십시오.새로운 크기 단위인 sdp(확장 가능한 dp)를 제공하는 Android SDK입니다. 이 크기 단위는 화면 크기에 따라 확장됩니다(여기에 있는 답변에서도 설명됨).SDP
★★★★★★★★★★★★★★★★★★)
ADDED2 구글은 iOS 스토어보드 UI 개념의 유용성을 드디어 이해했습니다.ConstraintLayout
Android 세계용: ConstraintLayout으로 응답형 UI 구축
1) dp: (density independent pixels)
화면 해상도가 높아질수록(인치당 도트/픽셀 수가 많을 경우) dp의 한 단위로 표시되는 픽셀 수가 증가합니다.반대로 해상도가 낮은 장치에서는 dp 단위로 표시되는 픽셀 수가 감소합니다.이것은 상대 단위이므로 비교할 기준선이 있어야 합니다.160dpi로 하다식입니다.px = dp * (dpi / 160).
2) sp: (scale independent pixels)
이 단위는 화면 dpi(dp와 유사) 및 사용자의 글꼴 크기 선호도에 따라 크기가 조정됩니다.
3) px: (pixels)
화면의 실제 픽셀 또는 도트.
자세한 내용은 다음 웹 사이트를 참조하십시오.
Android의 화면 크기는 범주로 분류됩니다.ldpi
,mdpi
,hdpi
,xhdpi
,xxhdpi
★★★★★★★★★★★★★★★★★」xxxhdpi
. 화면 밀도는 화면 영역(인치 등) 내의 픽셀 양입니다.일반적으로 도트/인치로 측정됩니다./인치).dpi
를 참조해 주세요.
PX(Pixels):
- 스크린 픽셀에 매핑되는 일반적인 표준 픽셀.
px
절대 픽셀을 의미합니다.절대 픽셀의 너비 또는 높이를 지정할 때 사용합니다.권장하지 않습니다.
DP/DIP(Density pixels / Density independent pixels):
dip == dp
에 Android로dp
이것은, 의 대체 수단입니다.px
.으로 우리는 하지 않습니다.
px
이치노「 」를 사용하고px
폭 또는 높이를 설정하고 해당 응용 프로그램을 다른 화면 크기 장치에 다운로드하는 경우 해당 화면은 원래 크기에 따라 확장되지 않습니다.dp
대신 사용할 것을 강력히 권장합니다.px
을 사용하다dp
화면 크기에 따라 동적으로 확장 및 축소할 수 있습니다.가 준다면
dp/dip
안드로이드는 160픽셀 크기의 화면을 기반으로 픽셀 크기를 자동으로 계산합니다.
SP(Scale independent pixels):
사용자의 글꼴 크기 설정에 따라 크기가 조정됩니다.는 '보다 낫다'를 사용해야 합니다.
sp
.크기에 할 때 하세요.
sp
이것은 와 비슷합니다.dp
을 사용하다sp
사이즈는 화면 및 축소할 수 .
Android 설명서 내용:
할 때는 어느쪽인가를 합니다.
dp
★★★★★★★★★★★★★★★★★」sp
A a. A.dp
는, 의 물리 사이즈에 하지 않는 입니다.dpi
A . ANsp
유닛이지만 는 이 해야 합니다.
픽셀 밀도
화면의 픽셀 밀도와 해상도는 플랫폼에 따라 다릅니다.디바이스에 의존하지 않는 픽셀과 스케일러블 픽셀은 플랫폼 전체에 걸쳐 설계에 유연하게 대응할 수 있는 유닛입니다.
픽셀 밀도 계산
1인치 크기의 픽셀 수를 픽셀 밀도라고 합니다.고밀도 화면은 저밀도 화면보다 인치당 픽셀 수가 더 많습니다.
1인치 크기의 픽셀 수를 픽셀 밀도라고 합니다.고밀도 화면은 저밀도 화면보다 인치당 픽셀 수가 많습니다.그 결과, 같은 픽셀 치수의 UI 요소는 저밀도 화면에서는 더 크게, 고밀도 화면에서는 더 작게 표시됩니다.
화면 밀도를 계산하려면 다음 방정식을 사용할 수 있습니다.
화면 밀도 = 화면 폭(또는 높이) (픽셀 단위) / 화면 폭(또는 높이) (또는 인치 단위)
밀도에 의존하지 않음
화면의 픽셀 밀도와 해상도는 플랫폼에 따라 다릅니다.디바이스에 의존하지 않는 픽셀과 스케일러블 픽셀은 플랫폼 전체에 걸쳐 설계에 유연하게 대응할 수 있는 유닛입니다.
픽셀 밀도 계산 1인치에 맞는 픽셀 수를 픽셀 밀도라고 합니다.고밀도 화면은 저밀도 화면보다 인치당 픽셀 수가 더 많습니다.
밀도 독립성은 UI 요소가 서로 다른 밀도로 화면에 균일하게 표시되는 것을 말합니다.
dp ('딥'이라고 발음)로 표기된 밀도에 의존하지 않는 픽셀은 어느 화면에서나 균일한 치수로 확장 가능한 유연한 단위입니다.재료 UI는 밀도에 의존하지 않는 픽셀을 사용하여 밀도가 다른 화면에 요소를 일관되게 표시합니다.

- 밀도에 의존하지 않고 표시되는 저밀도 화면
- 고밀도 화면을 고밀도로 표시
전문 읽기 https://material.io/design/layout/pixel-density.html
휴대폰의 화면은 픽셀(px)이라고 알려진 수천 개의 작은 점들로 이루어져 있다.픽셀은 그림을 만드는 가장 작은 요소입니다.사진이나 문구를 만드는 픽셀 수가 많을수록 선명해지고 스마트폰 화면을 쉽게 읽을 수 있게 된다.
화면 해상도는 화면 상의 픽셀 수로 측정됩니다.화면 해상도는 기기를 구입할 때 일반적으로 사용되는 사양이지만, 화면을 픽셀 단위로 생각하면 물리적인 크기의 개념이 무시되기 때문에 Android용으로 설계할 때는 그다지 유용하지 않습니다.이것은 터치 디바이스에서 매우 중요합니다.
설계자는 밀도에 의존하지 않는 픽셀(dp 또는 dip)을 사용하여 타깃 디바이스의 해상도나 밀도에 관계없이 예상대로 표시되는 자산을 생성할 수 있습니다.
밀도에 의존하지 않는 픽셀(dp 또는 dip)은 기준 밀도에서 1픽셀 또는 160dpi(인치당 도트)와 같습니다.
1 px/1dp = 160 dpi/160 dpi
2 px/1dp = 320 dpi(2x)/160 dpi
어디에,
dpi는 인치당 도트입니다.
따라서 320dpi에서 1dp는 2px와 같습니다.
공식
px/dp = dpi/160 dpi
인치당 도트 수(dpi)는 디스플레이 화면의 선명도(즉, 조명 점의 밀도)를 측정합니다.같은 수의 픽셀이 다른 공간에 분산되어 있기 때문에 특정 해상도의 인치당 도트는 전체 화면 크기에 따라 달라집니다.
밀도에 의존하지 않는 픽셀을 사용하는 것은 픽셀 해상도는 같지만 공간 크기는 다른 두 장치를 사용하는 경우와 같은 상황에 대처하는 데 도움이 됩니다.예를 들어 태블릿과 전화기의 픽셀 해상도는 각각 1280 x 800 픽셀(160 dpi)과 800 x 1280 픽셀(320 dpi)로 동일합니다.
현재 태블릿은 기준 밀도(160dpi)에 있기 때문에 물리적 및 밀도에 의존하지 않는 픽셀 크기는 1280 x 800으로 동일합니다.한편, 전화기의 픽셀 밀도는 높기 때문에, 물리 픽셀의 절반의 밀도에 의존하지 않는 픽셀을 가지고 있습니다.전화기는 400x640의 독립된 픽셀을 가지고 있습니다.따라서 밀도에 의존하지 않는 픽셀을 사용하면 태블릿이 전화기보다 훨씬 더 넓은 공간을 가지고 있다는 것을 상상하기 쉬워집니다.
마찬가지로 화면 크기는 비슷하지만 픽셀 밀도가 다른2개의 디바이스가 있는 경우(예를 들어 800x1280픽셀(320dpi), 400x640픽셀(160dpi) 등), 두 디바이스에 대해 완전히 다른 레이아웃을 정의할 필요는 없습니다.두 디바이스 모두 같은 밀도에 의존하지 않는 픽셀로 자산을 측정할 수 있기 때문입니다.
800 x 1280 픽셀 (320 dpi)=400 x 640 밀도 독립 픽셀(dp)
400 x 640 픽셀 (160 dpi)=400 x 640 밀도에 의존하지 않는 픽셀 (dp)
글꼴 크기에는 독립 픽셀 축척(sp)이 선호됩니다.Android는 접근성을 위해 사용자가 단말기의 글꼴 크기를 사용자 지정할 수 있도록 합니다.텍스트를 읽는 데 문제가 있는 사용자는 장치의 글꼴 크기를 늘릴 수 있습니다.일반적으로 이 옵션은 전화기 또는 태블릿의 디스플레이 설정에서 글꼴 크기로 찾을 수 있습니다.대부분의 경우 내게 필요한 옵션 설정을 통해서도 사용할 수 있습니다.
축척에 의존하지 않는 픽셀의 경우 16sp는 장치의 글꼴 크기가 정상일 때 또는 100%일 때 16dp와 정확히 동일합니다.그러나 장치의 글꼴 크기가 큰 경우(예: 125%), 16sp는 20dp 또는 1.25 곱하기 16으로 변환됩니다.
글꼴 크기 단위로 dp를 사용하는 경우 사용자가 장치의 글꼴 크기를 사용자 지정했는지 여부에 관계없이 해당 텍스트는 특정 물리적 크기를 가집니다.sp 유닛을 사용하면 시력이 손상된 사람들에게 더 나은 경험을 할 수 있습니다.
레퍼런스:Udacity, 구글
sp: 스케일 비의존 픽셀
사용자가 단말기에서 사용하는 글꼴 크기에 따라 자동으로 크기가 조정되므로 텍스트와 함께 사용해야 합니다.
px: 픽셀 또는 픽처 요소가 화면상의 단일 포인트입니다.
픽셀(px) – 화면의 실제 픽셀에 해당합니다.절대 픽셀의 너비 또는 높이를 지정할 때 사용합니다.
밀도에 의존하지 않는 픽셀(dp 또는 dip)– 화면의 물리적 밀도를 기반으로 하는 추상 단위입니다.이러한 단위는 160dpi 화면에 상대적이므로 1dp는 160dpi 화면에 1픽셀입니다.dp 대 픽셀의 비율은 화면 밀도에 따라 변화하지만 반드시 정비례할 필요는 없습니다.주의: 컴파일러는 "dip"과 "dp"를 모두 사용할 수 있지만 "dp"가 "sp"와 더 일치합니다.
축척에 의존하지 않는 픽셀(sp)– 이는 dp 유닛과 비슷하지만 사용자의 글꼴 크기 선호도에 따라 크기가 조정됩니다.글꼴 크기를 지정할 때 이 장치를 사용하는 것이 좋습니다. 따라서 화면 밀도와 사용자 선호도에 따라 글꼴 크기를 조정할 수 있습니다.
글꼴 크기에는 항상 dp와 sp만 사용하고 다른 모든 크기에는 dp만 사용하십시오.밀도가 다른 Android 기기와 UI가 호환되도록 할 것입니다.픽셀 및 dp에 대한 자세한 내용은 https://www.google.com/design/spec/layout/units-measurements.html#units-measurements-density-independent-pixels-dp-를 참조하십시오.
소스 URL:- http://www.androidtutorialshub.com/what-is-the-difference-between-px-dp-dip-sp-on-android/
할 수 있는 .dp
저는 실,, 각엔 .라고 생각합니다dp
이치노 dp
물리적인 길이의 단위일 뿐입니다. 있어요.mm
★★★★★★★★★★★★★★★★★」inch
는 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★50dp
,60dp
50/160 inch
★★★★★★★★★★★★★★★★★」60/160 inch
의 「1개의」이 있기 dp
★★★★★★1/160 inch
화면 크기나 해상도에 관계없이 사용할 수 있습니다.
Android dpi pi는pi는는 는는는는 는는는 는는는 는 、 Android dpi pi는는는는 。예를 들어 160dpi로 분류된 화면은 실제로 170dpi가 될 수 있습니다. 이 계산 는 이 계산의 계산 결과입니다.dp
흐릿하다.거의 같은 값이어야 합니다.1/160 inch
.
SDP(확장 가능한 크기 단위)는 기본적으로 단위가 아니라 다양한 화면 크기를 위한 치수 리소스입니다.
Intuit에서 sdp 라이브러리를 사용해 보십시오.유닛의 문제를 해결하는 것이 매우 편리하고, 복수의 화면을 신속히 서포트할 수 있습니다.
사용.
android:paddingBottom="@dimen/_15sdp"
과 긍정으로android:layout_marginTop="@dimen/_minus10sdp"
sdp sdp sdp sdp sdp의 경우
입니다.values-sw<N>dp
더( ( sw = simally Width ) 。
주의
조심해서 사용하세요!대부분의 경우 태블릿은 다른 레이아웃을 설계해야 합니다.
예
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_minus10sdp"
android:paddingBottom="@dimen/_15sdp"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:includeFontPadding="false"
android:text="♡"
android:textColor="#ED6C27"
android:textSize="@dimen/_70sdp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:includeFontPadding="false"
android:text="U"
android:textColor="@android:color/black"
android:textSize="@dimen/_70sdp" />
</LinearLayout>
텍스트 크기는 db를 사용할 수 있지만 텍스트 크기는 ssp를 선호합니다.
자세한 내용은 라이브러리 GitHub 페이지를 참조하십시오.
dp 대 픽셀의 비율은 화면 밀도에 따라 변화하지만 반드시 정비례할 필요는 없습니다.
주의: 컴파일러는 "dip"과 "dp"를 모두 사용할 수 있지만 "dp"가 "sp"와 더 일치합니다.
축척에 의존하지 않는 픽셀 - 이것은 dp 단위와 비슷하지만 사용자의 글꼴 크기 선호도에 따라 크기가 조정됩니다.
언급URL : https://stackoverflow.com/questions/2025282/what-is-the-difference-between-px-dip-dp-and-sp
'programing' 카테고리의 다른 글
HTML5 localStorage/sessionStorage에 개체를 저장하는 방법 (0) | 2023.04.09 |
---|---|
SQL Server 2008 Windows 인증 로그인 오류:로그인이 신뢰할 수 없는 도메인입니다. (0) | 2023.04.09 |
다른 모듈에서 nestjs 서비스를 주입합니다. (0) | 2023.04.04 |
Typescript에서 구성원을 참조할 때 !( 느낌표/bang) 연산자는 무엇입니까? (0) | 2023.04.04 |
WordPress 플러그인:어떻게 하면 '긴밀 커플링'을 피할 수 있을까요? (0) | 2023.04.04 |