"px", "dip", "dp"및 "sp"의 차이점은 무엇입니까?


5813

Android 측정 단위의 차이점은 무엇입니까?

  • px
  • 담그다
  • dp
  • sp

65
이것은 안드로이드에서 px, 딥, dp와 sp의 전체 차이를 사용합니다 [ developer.android.com/guide/topics/resources/…
NagarjunaReddy

20
이 멋진 변환기 는 내 의견으로 는 그것을 가장 잘 보여줍니다 . 또한 Photoshop에서 스프라이트를 내보내거나 실제 치수에 대한 레이아웃을 디자인 할 때 매우 유용합니다.
Paul Lammertsma

9
Google 디자인 단위 및 측정
Arnav M.


답변:


5770

로부터 안드로이드 개발자 설명서 :

  1. 픽셀
    픽셀 -화면의 실제 픽셀에 해당합니다.


  2. 인치 - 스크린의 물리적 크기에 기반.
    1 인치 = 2.54 센티미터

  3. mm
    밀리미터 -화면의 실제 크기를 기준으로합니다.

  4. pt
    포인트 -화면의 실제 크기를 기준으로 1/72 인치.

  5. dp 또는
    밀도 -독립 픽셀-화면의 물리적 밀도를 기반으로하는 추상 단위입니다. 이 단위는 160dpi 화면을 기준으로하므로 160dpi 화면에서 1dp는 1 픽셀입니다. dp 대 픽셀의 비율은 화면 밀도에 따라 변경되지만 반드시 직접 비율로 변경되는 것은 아닙니다. 참고 : "dp"는 "sp"와 더 일관성이 있지만 컴파일러는 "dip"및 "dp"를 모두 허용합니다.

  6. SP
    스케일 이것은 dp 단위와 같다, 그러나 그것은 또한 사용자의 글꼴 크기를 기본 설정으로 조정됩니다 - 픽셀에 무관. 글꼴 크기를 지정할 때이 단위를 사용하는 것이 좋으므로 화면 밀도와 사용자 기본 설정 모두에 맞게 조정됩니다.

에서 이해 밀도 독립에 안드로이드 :

+----------------+----------------+---------------+-------------------------------+
| Density Bucket | Screen Density | 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 | 
+----------------+----------------+---------------+-------------------------------+
+---------+-------------+---------------+-------------+--------------------+
| Unit    | Description | Units Per     | Density     | Same Physical Size | 
|         |             | Physical Inch | Independent | On Every Screen    | 
+---------+-------------+---------------+-------------+--------------------+
| px      | Pixels      | Varies        | No          | No                 | 
+---------+-------------+---------------+-------------+--------------------+
| in      | Inches      | 1             | Yes         | Yes                | 
+---------+-------------+---------------+-------------+--------------------+
| mm      | Millimeters | 25.4          | Yes         | Yes                | 
+---------+-------------+---------------+-------------+--------------------+
| pt      | Points      | 72            | Yes         | Yes                | 
+---------+-------------+---------------+-------------+--------------------+
| dp      | Density     | ~160          | Yes         | No                 | 
|         | Independent |               |             |                    | 
|         | Pixels      |               |             |                    | 
+---------+-------------+---------------+-------------+--------------------+
| sp      | Scale       | ~160          | Yes         | No                 | 
|         | Independent |               |             |                    | 
|         | Pixels      |               |             |                    | 
+---------+-------------+---------------+-------------+--------------------+

자세한 내용은 Google 디자인 설명서 에서 확인할 수 있습니다 .


17
비록 그것들이 같은 것이되어야하지만 모든 것이 딥으로 잘 작동하는 동안 dp에 많은 문제가있는 경향이 있습니다
DallaRosa

247
완전히 명백하지 않은 db / sp에 대한 한 가지 참고 사항 : 이것에 대해 발생하는 스케일링은 장치의 실제 밀도 (dpi)가 아니라 어떤 "버킷"의 밀도에 따라 달라집니다. 사용 가능한 버킷은 120,160,240,320입니다. 이로 인해 화면이 크게 달라 지지만 일부 버킷을 처리하는 데 문제가 발생할 수 있습니다.
Fraggle

15
컴파일러에서 여전히 "dip"을 허용하는 것으로 보이지만 설명서에는 더 이상 "dip"가없고 "dp"만 언급되어 있습니다.
Adam Rosenfield

15
@android_developer (위의 5 코멘트) dp는 실제 동일한 길이를 가지고 있지 않습니다 . (가까이 있지만) 버킷에 대한 @Fraggle의 의견을 참조하십시오. 이것이 의미하는 것은 48dp는 대략 8mm (0.3 인치)이지만 최대 11mm까지 다양 할 수 있습니다.
intrepidis

11
버킷 팅의 이유는 개발자가 밀도가 다른 몇 가지 장치에서 앱을 테스트하고 레이아웃이 여러 장치에서 동일하게 보일 것임을 확신하기 위해서입니다. 따라서 버튼 등의 물리적 크기가 약간 바뀌더라도 활동의 전체 모양이 동일합니다.
intrepidis

684

이것에 대한 거의 모든 것과 크기와 밀도가 다른 여러 화면을 가장 잘 지원하는 방법은 여기에 잘 문서화되어 있습니다.

화면 크기
실제 물리적 크기이며 화면의 대각선으로 측정됩니다. 간단하게하기 위해 Android는 모든 실제 화면 크기를 소형, 보통, 대형 및 초대형의 네 가지 일반 크기로 그룹화합니다.

화면 밀도 화면
의 물리적 영역 내 픽셀 수입니다. 일반적으로 dpi (인치당 도트 수)라고합니다. 예를 들어, "낮은"밀도 화면은 "일반"또는 "높은"밀도 화면과 비교하여 지정된 물리적 영역 내에서 더 적은 픽셀을 갖습니다. 간단하게하기 위해 Android는 모든 실제 화면 밀도를 6 가지 일반 밀도 (낮음, 중간, 높음, 매우 높음, 매우 높음, 매우 높음)로 분류합니다.

방향
사용자 관점에서 화면의 방향입니다. 이것은 가로 또는 세로이며, 화면의 가로 세로 비율이 각각 넓거나 길다는 것을 의미합니다. 기본적으로 다른 장치는 다른 방향으로 작동 할뿐만 아니라 사용자가 장치를 회전 할 때 런타임에 방향이 변경 될 수 있습니다.

해상도 화면
의 총 실제 픽셀 수입니다. 여러 화면에 대한 지원을 추가 할 때 응용 프로그램은 해상도와 직접 작동하지 않습니다. 응용 프로그램은 일반화 된 크기 및 밀도 그룹으로 지정된 화면 크기 및 밀도에만 관심을 가져야합니다.

밀도 독립 픽셀 (dp)
UI 레이아웃을 정의 할 때 레이아웃 크기 나 위치를 밀도 독립적 인 방식으로 표현할 때 사용해야하는 가상 픽셀 단위입니다. 밀도 독립적 인 픽셀은 160dpi 화면에서 하나의 물리적 픽셀과 같습니다. 이는 "중간"밀도 화면에 대해 시스템에서 가정 한 기준 밀도입니다. 런타임시 시스템은 사용중인 화면의 실제 밀도에 따라 필요한 경우 dp 단위의 모든 스케일링을 투명하게 처리합니다. dp 단위를 화면 픽셀로 변환하는 것은 간단 px = dp * (dpi / 160)합니다. 예를 들어 240dpi 화면에서 1dp는 1.5 물리적 픽셀과 같습니다. 밀도가 다른 화면에 UI를 올바르게 표시하려면 응용 프로그램의 UI를 정의 할 때 항상 dp 단위를 사용해야합니다.

여러 유형의 장치를위한 Android 앱 개발에 대해 진지한 경우 화면 지원 개발 문서를 한 번 이상 읽었어야합니다. 또한 특정 화면 구성을 가진 실제 장치 수를 항상 아는 것이 좋습니다.


41
따라서 버튼에 dp를 사용하고 버튼 텍스트의 글꼴 크기에 sp를 사용하면 사용자가 크기 조정을 시작하면 어떻게됩니까? 텍스트가 커지지 만 버튼을 확대하여 버튼을 수용 할 수 있습니까?
Wytze

11
@Wytze, 아뇨. 텍스트를 맞추는 것이 문제가 될 수있는 경우 dip을 사용하여 오버플로하지 않도록하십시오.
eski

12
@Wytze 그리고 나는 반대로 텍스트와 텍스트에 sp를 사용합니다. 예를 들어, 크기가 고정 된 버튼과 그 안에 텍스트가있는 경우 버튼 크기를 sp로 할당하여 필요할 때 확장 할 수 있습니다. 그렇지 않으면, 사용자는 텍스트의 크기를 증가시킨 것에 대해 짜증을 내고 증가하지 않았다. 물론 레이아웃은이를 허용 할 수있을만큼 유연해야합니다.
Malcolm

2
설계자가 sp 크기에 따라 텍스트 기반 요소의 크기를 조절할 여지를 남기지 않는 경우 한 가지 옵션은 좁은 장치에 사용할 레이아웃으로 전환 한 다음 (DisplayMetrics.scaledDensity / DisplayMetrics)를 통해 모든 것을 균일하게 확장하는 것입니다. 밀도).
John Mellor

@Sam 어떤 여유 공간 부족은 또한 국제화 동안 문제가 발생합니다
활동을 감소

346

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 mdpi 용 이미지
  • 150 * 150 px hdpi 용 이미지
  • 200 * 200 px xhdpi 용 이미지

2
hdpi, ldpi, mdpi 등의 픽셀을 어떻게 계산합니까?이 공식을 사용한다고 들었습니다 ..px = dp * (dpi / 160); 이 공식 plz로 설명해 주시겠습니까?
Rakesh patanga

@Rakeshpatanga 160dpi 밀도에서 1px = 1dp (물리적 픽셀과 dp 추상화는 동일 함) 즉, 단일 dp의 경우 (1) * (160/160) = 1 또는 정확히 1px입니다. 320dpi의 높은 밀도에서 단일 dp는 (1) * (320/160) = 2 픽셀이며 두 dp는 (2) * (320/160) = 4px입니다.
samis

이를 보려면 모노 스페이스로 줄을 바꾸십시오. | 1dp |, | ___ | ___ | 160, | _ | _ | _ | _ | 320 (쉼표 뒤에 줄 바꿈). | _ | = 1 PX 엘.
samis

"지원되는 화면 크기를 위해 다른 크기의 이미지를 만들어야합니다." 들어 작은 고 대비 예를 들어, 아이콘 이미지, (확인이 명확 할 예정입니다) 플러스 상당히 큰 크기 (너무 많은 버전이 흐릿하게 보이지 않는) 적어도 가장 작은 크기를 만들 것이 현명하다. 그러나 아이콘의 경우에도 고밀도에서 하나의 이미지를 다양한 크기로 확장 할 수 있습니다. 사진의 경우 채울 표시 영역을 지정하고 장치 배율에 의존하십시오.
ToolmakerSteve

285

px-픽셀 -스케일 당 포인트는 화면의 실제 픽셀에 해당합니다.

i-인치 -화면의 실제 크기를 기준으로합니다.

mm-밀리미터 -화면의 실제 크기를 기준으로합니다.

pt-포인트 -화면의 실제 크기를 기준으로 1/72 인치.

dp-밀도 독립적 픽셀 -화면의 물리적 밀도를 기반으로하는 추상 단위입니다. 이 단위는 160dpi 화면을 기준으로하므로 160dpi 화면에서 dp1 픽셀입니다. dp 대 픽셀의 비율은 화면 밀도에 따라 변경되지만 반드시 직접 비율로 변경되는 것은 아닙니다. 참고 : 컴파일러는 모두를 수용 dip하고 dp있지만, dp더 일치한다 sp.

sp-스케일 독립 픽셀 -이것은 dp단위와 비슷하지만 사용자의 글꼴 크기 환경 설정에 따라 스케일됩니다. 글꼴 크기를 지정할 때이 단위를 사용하는 것이 좋으므로 화면 밀도와 사용자 기본 설정 모두에 맞게 조정됩니다.

크기는 같지만 화면 밀도가 160dpi (인치당 도트 수, 즉 인치당 픽셀 수)이고 다른 하나는 240dpi 인 두 화면을 예로 들어 보겠습니다.

                          Lower resolution screen     Higher resolution, same size
Physical Width                      1.5 inches                        1.5 inches
Dots Per Inch (“dpi”)               160                               240
Pixels (=width*dpi)                 240                               360
Density (factor of baseline 160)    1.0                               1.5

Density-independent pixels          240                               240
(“dip or dp or dps”)

Scale-independent pixels 
 (“sip or sp”)                  Depends on user font size settings    same

233

또한 다음 개념에 대한 명확한 이해가 있어야합니다.

화면 크기:

실제 물리적 크기로 화면의 대각선으로 측정됩니다. 간단하게하기 위해 Android는 모든 실제 화면 크기를 소형, 보통, 대형 및 초대형의 네 가지 일반 크기로 그룹화합니다.

화면 밀도 :

화면의 물리적 영역 내 픽셀 수. 일반적으로 dpi (인치당 도트 수)라고합니다. 예를 들어, "낮은"밀도 화면은 "일반"또는 "높은"밀도 화면과 비교하여 지정된 물리적 영역 내에서 더 적은 픽셀을 갖습니다. 간단하게하기 위해 Android는 모든 실제 화면 밀도를 낮음, 중간, 높음 및 매우 높음의 네 가지 일반 밀도로 그룹화합니다.

정위:

사용자의 관점에서 화면의 방향. 이것은 가로 또는 세로이며, 화면의 가로 세로 비율이 각각 넓거나 길다는 것을 의미합니다. 기본적으로 다른 장치는 다른 방향으로 작동 할뿐만 아니라 사용자가 장치를 회전 할 때 런타임에 방향이 변경 될 수 있습니다.

해결:

화면의 총 실제 픽셀 수입니다. 여러 화면에 대한 지원을 추가 할 때 응용 프로그램은 해상도와 직접 작동하지 않습니다. 응용 프로그램은 일반화 된 크기 및 밀도 그룹으로 지정된 화면 크기 및 밀도에만 관심을 가져야합니다.

밀도 독립적 픽셀 (dp) :

UI 레이아웃을 정의 할 때 레이아웃 크기를 나타내거나 밀도 독립적 인 방식으로 위치를 지정하는 데 사용해야하는 가상 픽셀 단위입니다. 밀도 독립적 인 픽셀은 160dpi 화면에서 하나의 물리적 픽셀과 같습니다. 이는 "중간"밀도 화면에 대해 시스템에서 가정 한 기준 밀도입니다. 런타임시 시스템은 사용중인 화면의 실제 밀도에 따라 필요한 경우 dp 단위의 모든 스케일링을 투명하게 처리합니다. dp 단위를 화면 픽셀로 변환하는 것은 간단합니다 : px = dp * (dpi / 160). 예를 들어 240dpi 화면에서 1dp는 1.5 물리적 픽셀과 같습니다. 애플리케이션의 UI를 정의 할 때 밀도가 다른 화면에 UI를 올바르게 표시하려면 항상 dp 단위를 사용해야합니다.

참조 : Android 개발자 사이트


그렇다면 dp 단위를 사용하여 디자인 한 모든 것이 장치의 픽셀 밀도에 관계없이 항상 화면의 동일한 비율을 차지한다는 의미입니까? 동일한 종횡비를 가정합니다.
DBIT

198

dp입니다 dip. 여백, 패딩 등 모든 것에 사용하십시오.

sp{text-size}에만 사용하십시오 .


다른 화면 밀도에서 동일한 크기를 얻기 위해 Android는 런타임에 이러한 단위를 픽셀로 변환하므로 까다로운 수학은 없습니다.


사이의 차이를 참조하십시오 px, dp그리고 sp다른 화면 크기에있다.

여기에 이미지 설명을 입력하십시오

출처 : Android 프로그래밍 : The Big Nerd Ranch Guide


143

나는 변환하기 위해 아래의 공식을 계산 한 dpi에를 dp하고sp 여기에 이미지 설명을 입력하십시오


10
그것은 dpi로 대신 PPI해야한다
Prateek

141

정의

px 또는 dot은 실제 화면 의 픽셀 입니다.

dpi 는 실제 화면에서 인치당 픽셀 수이며 디스플레이의 밀도를 나타냅니다.

안드로이드는 여러 밀도에 별칭 이름을 제공합니다

  • ldpi (낮음) ~ 120dpi
  • mdpi (중간) ~ 160dpi
  • hdpi (높음) ~ 240dpi
    • 2015 년 대부분의 기기가 여기 있습니다
  • xhdpi (초고) ~ 320dpi
    • Apple iPhone 4/5/6, Nexus 4
  • xxhdpi (초고속) ~ 480dpi
    • 넥서스 5
  • xxxhdpi (초고속) ~ 640dpi

또는 dp밀도와 무관 한 픽셀 이며, 즉 물리적 밀도에 따라 더 많거나 적은 픽셀에 해당합니다.

  • MDPI에서 1dp = 1px

여기에 이미지 설명을 입력하십시오

sp 또는 sip크기 독립적 인 픽셀 입니다. 큰 텍스트 옵션이 켜져 있을 때 크기가 조정됩니다. Settings>Accessibility

  • 1sp = 1dp
  • 1sp = 1.2dp 접근성 큰 텍스트

무엇을 사용해야합니까?

텍스트 크기에 sp 를 사용하십시오 .

다른 모든 것에는 dp 를 사용하십시오 .


128

소스 1

소스 2

소스 3 : (소스 3의 데이터는 다음과 같습니다)

이들은 XML로 정의 된 차원 값입니다. 차원은 숫자와 측정 단위로 지정됩니다. 예를 들어 10px, 2in, 5sp입니다. 다음 측정 단위는 Android에서 지원됩니다.

dp

밀도 독립적 픽셀-화면의 물리적 밀도를 기반으로하는 추상 단위입니다. 이 단위는 160dpi (dots per inch) 화면과 관련이 있으며 1dp는 대략 1px입니다. 더 높은 밀도의 화면에서 실행하는 경우 1dp를 그리는 데 사용되는 픽셀 수는 화면의 dpi에 적합한 비율로 확대됩니다. 마찬가지로, 저밀도 화면에서는 1dp에 사용되는 픽셀 수가 축소됩니다. dp 대 픽셀의 비율은 화면 밀도에 따라 변경되지만 반드시 직접 비율로 변경되지는 않습니다. px 단위 대신 dp 단위를 사용하면 레이아웃의 뷰 크기를 다른 화면 밀도에 맞게 적절하게 크기를 조정할 수 있습니다. 다시 말해, 다양한 장치에서 실제 UI 요소 크기에 일관성을 제공합니다.

sp

스케일 독립 픽셀-이것은 dp 단위와 비슷하지만 사용자의 글꼴 크기 환경 설정에 따라 스케일됩니다. 글꼴 크기를 지정할 때이 단위를 사용하는 것이 좋으므로 화면 밀도와 사용자 기본 설정 모두에 맞게 조정됩니다.

pt

포인트-화면의 실제 크기를 기준으로 1/72 인치.

px

픽셀-화면의 실제 픽셀에 해당합니다. 실제 측정 값은 장치마다 다를 수 있으므로이 측정 단위는 권장하지 않습니다. 각 장치는 인치당 다른 수의 픽셀을 가질 수 있으며 화면에서 사용 가능한 총 픽셀 수를 더 많거나 적을 수 있습니다.

mm

밀리미터-화면의 실제 크기를 기준으로합니다.

인치-화면의 실제 크기를 기준으로합니다.

참고 : 차원은 XML 파일 이름이 아닌 name 속성에 제공된 값을 사용하여 참조되는 간단한 리소스입니다. 따라서 하나의 요소 아래에서 하나의 XML 파일에서 차원 리소스를 다른 간단한 리소스와 결합 할 수 있습니다.


9
또한이 답변의 부가 가치는 무엇입니까? 다른 답변에서 아직 언급되지 않은 것은 없습니다.
laalto

118

기본적으로 px가 적용되는 유일한 시간은 1px이며, 디바이더의 경우처럼 화면에서 정확히 하나의 픽셀을 원할 때입니다.

> 160dpi에서 2-3 픽셀을 얻을 수 있습니다.

> 120dpi에서는 0으로 반올림됩니다.


getDimensionPixelOffset은 내림하고 getDimensionPixelSize는 올림합니다.
Eugen Pechanec

101

px

픽셀-화면의 실제 픽셀에 해당합니다.

dp 또는 딥

밀도 독립적 픽셀-화면의 물리적 밀도를 기반으로하는 추상 단위입니다. 이 단위는 160dpi 화면을 기준으로하므로 160dpi 화면에서 1dp는 1 픽셀입니다.

dp 사용 :

밀도 독립성 -응용 프로그램은 밀도가 다른 화면에 표시 될 때 사용자 인터페이스 요소의 물리적 크기 (사용자 관점에서)를 보존 할 때 "밀도 독립성"을 달성합니다. (예 : 이미지는 다른 유형의 화면에서 동일한 크기 (확대 또는 축소되지 않음)로 보여야합니다.

sp

스케일 독립 픽셀-이것은 dp 단위와 비슷하지만 사용자의 글꼴 크기 환경 설정에 따라 스케일됩니다.

http://developer.android.com/guide/topics/resources/more-resources.html#Dimension


97

px와 dp의 관계는 어디에 있습니까?

밀도 독립적 픽셀 (dp)

UI 레이아웃을 정의 할 때 레이아웃 크기를 나타내거나 밀도 독립적 인 방식으로 위치를 지정하는 데 사용해야하는 가상 픽셀 단위입니다. 전술 한 바와 같이, 밀도-비 의존적 픽셀은 160dpi 스크린상의 하나의 물리적 픽셀과 동등하며, 이는 "중간"밀도 스크린에 대해 시스템에 의해 가정 된 기준 밀도이다. 런타임시 시스템은 사용중인 화면의 실제 밀도에 따라 필요한 경우 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가 필요한 경우가 있습니다. 예를 들어 ListView 구분선이 있습니다. px는 전체 화면 해상도에 대해 하나의 픽셀 라인을 구분자로 제공하는 데 더 좋습니다.

sp

글꼴 크기에 sp를 사용하십시오. 그런 다음 장치 글꼴 크기가 변경되는 동안 응용 프로그램 내부의 글꼴 만 변경됩니다 (즉, 디스플레이-> 장치의 글꼴). 앱 안에 정적 크기의 글꼴을 유지하려면 글꼴 크기를 dp로 지정할 수 있습니다. 이런 경우에는 절대 바뀌지 않습니다. 개발자는 특정 화면에 대해 이러한 요구 사항을 충족 할 수 있습니다. 개발자는 sp 대신 dp를 사용할 수 있습니다. 다른 모든 경우에는 sp가 권장됩니다.


89

당신은 차이 볼 수 있습니다 px그리고 dp아래 그림에서, 그리고 당신은 또한 찾을 수 pxdp다른 화면에 동일한 물리적 크기를 보장 할 수 있습니다.

여기에 이미지 설명을 입력하십시오


3
@EnesBattal, dp는 물리적 크기가 크지 않기 때문에 대략적인 값이라고 생각합니다. CapTech 인용 : "dp-밀도 독립 단위이지만 단일"dp "의 실제 크기는 모든 화면 밀도에서 거의 동일합니다. 인치당 약 160"dp "입니다. 장치의 밀도 버킷에서 "dp"를 160dpi에서 픽셀 수로 변환하는 데 적용됩니다. 단일 "dp"로 변환되는 픽셀 수는 화면 밀도의 픽셀 및 장치가 떨어지는 밀도 버킷에 따라 달라집니다 으로."
Zephyr

3
@RuchirBaronia, apk는 아직 실행되는 화면 밀도의 종류를 모르기 때문에 DP 또는 DIP가 여전히 apk 안에 있다고 생각합니다. 따라서 장치 독립성을 유지해야합니다.
Zephyr

79

텍스트와 외관해야 사용의 크기와 관련이 아무것도 sppt. 반면 컨트롤의 크기, 레이아웃 등과 관련된 모든 것은와 함께 사용해야합니다 dp.

dp그리고 dip그 장소에서 모두 사용할 수 있습니다 .


69

dp 만 사용합니다.

글꼴 크기에 "sp"를 사용하는 것에 대해 많은 이야기가 있으며, 요점을 알고 있지만 디자인 관점에서 옳은 것이라고 생각하지 않습니다. 사용자가 이상한 글꼴 크기를 선택하면 디자인을 깨뜨릴 수 있으며 사용자는 자신의 삶의 선택이 아닌 을 비난 하게됩니다 .

또한 160dpi 태블릿에서 sp-font 앱을 사용하면 모든 크기가 커지는 것을 알 수 있지만 글꼴은 작게 보입니다. 보기에는 좋지 않습니다.

"sp"글꼴에 대한 아이디어는 마음이 좋지만 아이디어는 좋지 않습니다. 모든 것을 위해 dp를 고수하십시오.


1
적용된 글꼴 비율이 요인이라는 것을 알고 sp있습니까? 영향 dp을받는 모든 항목 에도 영향을 미칩니다 sp. 즉, 레이아웃이 매우 빡빡하고 더 큰 크기가 맞지 않는 경우 dp대신 글꼴 크기를 지정하는 것이 sp좋습니다. 사용자가 완전히 엉망인 레이아웃보다 원하는 텍스트를 작게 만드는 것이 좋습니다. 그러나 첫 번째 경우에는 항상 사용자의 글꼴 크기 환경 설정을 존중하기 위해 노력해야합니다. 가장 큰 설정조차 그렇게 크지 않습니다.
Karu

67

sp = 스케일 독립 픽셀

dp = 딥 = 밀도 독립 픽셀

dpi = 인치당 도트

sp 를 사용하지 않아야합니다 .

dp 를 사용 하여 여러 화면을 지원 해야합니다 .

안드로이드는 다양한 화면 해상도를 지원합니다

  • ldpi (낮음) ~ 120dpi
  • mdpi (중간) ~ 160dpi
  • hdpi (높음) ~ 240dpi
  • xhdpi (초고) ~ 320dpi
  • xxhdpi (초고속) ~ 480dpi
  • xxxhdpi (Extra-extra-extra-high) ~ 640dpi

120dp ldpi 장치에는 1 인치 크기의 120 픽셀이 있습니다.

다른 밀도에서도 마찬가지입니다.

소프트웨어 엔지니어는 다음과 같은 변환 공식을 사용해야합니다.

픽셀 = dp * (밀도 / 160)

따라서 240dpi 장치의 1dp는 = 1 * (240/160) = 3/2 = 1.5 픽셀입니다.

그리고 480 dpi 장치의 1 dp는 1 * (480/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();

이해를위한 매우 좋은 자습서는 다음과 같습니다. http : /vinsol.com/blog/2014/11/20/tips-for-designers-from-a-developer
Kushal

5
"sp를 사용하지 말아야한다"왜 그런가? 사용자가 선호하는 텍스트 크기 인 developer.android.com/training/multiscreen/screendensities.html
ci_

레이아웃 원근법과 관련하여 답변했습니다. "제공된 링크에서 읽으십시오. 따라서 텍스트 크기를 정의 할 때이 측정 단위를 사용해야합니다 (그러나 레이아웃 크기에는 사용하지 마십시오)".
Kushal

문제는 "Android에서 px, dp, dip 및 sp의 차이점은 무엇입니까?" 귀하의 답변에 "sp 사용을 피해야합니다"라고 말했습니다. "레이아웃 관점"에 대한 언급은 어디에도 없었습니다.
ci_

예 .. dp와 dip는 동일합니다.
Kushal

61

공식 문서에서 복사 한 답변에 따라 " 사용자의 글꼴 크기 기본 설정 "으로 언급 된 단위 dp와의 차이점은 옵션 을 변경하여 런타임에 확인할 수 있습니다 .spSettings->Accessibility->Large Text

Large Text옵션을 사용하면 텍스트의 1.3시간이 더 커집니다.

private static final float LARGE_FONT_SCALE = 1.3f;

이것은 패키지 / 앱 / 설정 에 있기 때문에 물론 공급 업체에 따라 다를 수 있습니다 .


52

dpi-

  • 인치당 도트
  • 화면의 픽셀 밀도 측정

px-픽셀

  • 화면 픽셀 매핑

pt-포인트

  • 실제 화면 크기와 관련하여 약 1/72 인치.

인치 단위-실제 화면 크기 (1 인치 = 2.54cm)

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  

문서에 따르면 컴파일러는 "dip"와 "dp"를 모두 받아들이지 만 "dp"는 "sp"와 더 일관성이 있습니다
Arunendra

46

Android에서 사용하는 공식은 다음과 같습니다.

px = dp * (dpi / 160)

여기서 dpi는 다음 화면 밀도 중 하나입니다. 가능한 모든 밀도 목록을 보려면 여기로 이동

"DENSITY_ *"상수를 정의합니다.

  • ldpi (낮음) ~ 120dpi
  • mdpi (중간) ~ 160dpi
  • hdpi (높음) ~ 240dpi
  • xhdpi (초고) ~ 320dpi
  • xxhdpi (초고속) ~ 480dpi
  • xxxhdpi (초고속) ~ 640dpi

여기 에서 찍은 .

화면 dpi를 아는 경우 px와 dp를 번역 할 때 많은 혼란이 발생합니다.

hdpi 화면에 60dp의 이미지를 원한다고 가정하면 실제 픽셀 크기는 60dp입니다.

px = 60 * (240 / 160)

45

화면 크기 에서이 Android범주로 그룹화 small, medium, large, extra large, double-extratriple-extra. 화면 밀도는 화면 영역 (예 : 인치) 내의 픽셀 수입니다. 일반적으로 인치당 도트 수 (dpi)로 측정됩니다. 화면 밀도는 낮음, 중간, 높음 및 매우 높음으로 그룹화됩니다. 해상도는 화면의 총 픽셀 수입니다.

  • dp : 밀도 독립 픽셀, 화면 밀도에 따라 다릅니다. 160dpi 화면에서 1dp = 1 픽셀입니다. 글꼴 크기를 제외하고 항상 dp를 사용하십시오.
  • 딥 : 딥 == dp. 이전 Android 버전에서는 딥이 사용되었고 나중에 dp로 변경되었습니다.
  • sp : 사용자의 글꼴 크기 기본 설정에 따라 크기가 조정되는 독립 픽셀 크기 조정. 글꼴은 sp를 사용해야합니다.
  • px : 화면 픽셀에 매핑되는 일반적인 표준 픽셀입니다.
  • in : 실제 화면 크기와 관련하여 인치.
  • mm : 물리적 화면 크기에 대한 밀리미터
  • pt : 실제 화면 크기와 관련하여 1/72 인치.

단위 간 변환 공식

 px = dp * (dpi / 160)

장치에서 dp ~ px

다음 예는 더 잘 이해하는 데 도움이 될 수 있습니다. 스케일링은 120 (ldpi), 160 (mdpi), 240 (hdpi), 320 (xhdpi), 480 (xxhdpi) 및 640 (xxxhdpi)의 버킷 크기를 기준으로 발생합니다. Google이 제안한 설계 비율은 ldpi : mdpi : hdpi : xhdpi : xxhdpi의 3 : 4 : 6 : 8 : 12입니다.

150px X 150px 이미지는

  • mdpi의 150dp X 150dp 화면 공간
  • HDPI의 100dp X 100dp 화면 공간
  • xhdpi의 75dp X 75dp 화면 공간

모든 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/


45

커뮤니티 위키에서 답변을 읽으십시오. 아래에는 위의 답변 외에도 고려해야 할 정보가 있습니다. 대부분의 Android 개발자는 앱을 개발하는 동안 이것을 놓치므로 이러한 요점을 추가하고 있습니다.

sp = 스케일 독립 픽셀

dp = 밀도 독립 픽셀

dpi = 밀도 픽셀

위의 답변을 겪었습니다 ... 정확히 정확한 것을 찾지 못했습니다. 텍스트 크기의 경우 sp, 레이아웃 경계의 경우 dp-표준 그러나 대부분의 장치에서 부주의하게 사용하면 텍스트 크기의 sp가 레이아웃을 손상시킵니다 .

sp는 장치의 텍스트 크기를 가져 오는 반면 dp는 장치 밀도 표준의 텍스트를 가져옵니다 (장치에서 변경되지 않음) 100sp 텍스트는 장치에 설정된 글꼴 크기에 따라 화면의 80 % 또는 화면의 100 %를 차지할 수 있다고 가정하십시오.

여기에 이미지 설명을 입력하십시오

레이아웃 경계에도 sp를 사용할 수 있으며 작동합니다. :) 표준 앱은 전체 텍스트에 sp를 사용하지 않습니다.

UX를 ​​고려한 텍스트 크기에는 sp와 dp를 사용하십시오.

  • 툴바의 텍스트에 sp를 사용하지 마십시오 (dp로 다른 화면 크기에서 사용 가능한 Android dimens를 사용할 수 있음)
  • 작은 경계 버튼, 매우 작은 텍스트 등의 텍스트에는 sp를 사용하지 마십시오.

일부 사람들은 가독성을 높이기 위해 휴대 전화에서 큰 FONT 크기를 사용하므로 작은 하드 코딩 된 텍스트 크기가 UX 문제가 될 수 있습니다. 필요한 곳에 텍스트를 sp로 표시하되, 사용자가 설정을 변경할 때 레이아웃이 깨지지 않도록하십시오.

마찬가지로 모든 차원을 지원하는 단일 앱이있는 경우 xxxhdpi 자산을 추가하면 앱 크기가 크게 증가합니다. 그러나 이제 xxxhdpi 전화가 일반적이므로 사이드 바, 도구 모음 및 하단 막대에 아이콘에 대해 xxxhdpi 자산을 포함시켜야합니다. 모든 화면 크기에 대해 균일하고 우수한 품질의 이미지를 얻으려면 벡터 이미지로 이동하는 것이 좋습니다.

또한 사람들은 휴대 전화에서 맞춤 글꼴을 사용합니다. 따라서 글꼴이 없으면 간격 및 모든 문제가 발생할 수 있습니다. 사용자 정의 글꼴의 텍스트 크기 12sp가 기본 글꼴보다 약간 픽셀이 더 걸릴 수 있다고 가정하십시오.

안드로이드의 화면 밀도 및 기본 밀도 세부 정보는 Google 개발자 사이트를 참조하십시오. https://developer.android.com/training/multiscreen/screendensities


43
  • px-CSS, JavaScript 등에서 사용되는 것과 동일한 하나의 픽셀
  • sp-스케일 독립적 픽셀
  • 딥-밀도 독립적 픽셀

일반적으로 sp는 글꼴 크기에 사용되고 dip는 다른 글꼴에도 사용됩니다 (dp라고도 함).


39

다양한 화면 해상도를 위해 Android 앱 UI를 디자인하는 것에 대한 좋은 기사를 보았습니다.이 지역에서 검색하는 사람을 위해 여기에 남겨두고 싶습니다. 예, Google 문서에 설명되어 있으며 위의 게시물에 언급되어 있음을 알고 있지만 나에게 좋지는 않습니다 (예, 너무 어리 석습니다). 다른 화면 크기를 처리 할 수있는 레이아웃을 디자인하는 방법은 아직 명확하지 않습니다. 다른 화면에 대해 "유연한"UI 레이아웃을 구현해야 할 때 DP 개념 등이 싫습니다. (iOS 개발자 여러분, 예, 스토리 보드 개념이 맞습니다).

안드로이드는 나쁜 UI 개념은 아니지만 불행히도 iOS 스토리 보드 기능이 부족합니다. 안드로이드에서 유연한 UI를 디자인하는 것은 쉬운 일이 아닙니다.

다음은 다양한 화면 크기의 레이아웃을 만들기 위해 Android에서 수행 할 작업을 이해하는 데 도움이되는 기사입니다.

JMSTUDIO 블로그 :-안드로이드 앱 화면 크기 결정

화면 크기가 다른 Android 앱용 UI를 디자인하는 방법

다양한 화면 크기에 맞게 앱 UI를 디자인하려면 초기 디자인이 각 화면 크기에 필요한 최소 공간을 충족해야합니다. Android는 일반화 된 각 화면 유형에 대한 최소 크기 (dp)를 정의합니다. 다음은 Android 화면 크기 지침입니다. dp에서 Android의 최소 화면 크기 화면 크기가 dp로 설정되면 Android 앱 UI를 디자인하는 것만으로는 충분하지 않습니다. 각 화면 크기마다 각 밀도에 대한 그래픽 및 비트 맵 이미지를 준비해야합니다. 다음은 Android 화면 밀도 지침입니다. 안드로이드 밀도 가이드 라인 (dpi)

쉬운 계산을 위해 4 가지 일반 밀도 사이의 3 : 4 : 6 : 8 스케일링 비율을 따를 수 있습니다. ldpi 장치 용 36 × 36 픽셀 픽쳐를 생성하면 나머지 밀도 사진 크기는 mdpi의 경우 48 × 48, hdpi의 경우 72 × 72, xhdpi의 경우 96 × 96이됩니다.

Photoshop에서 Android 앱 UI를 디자인하는 방법

많은 디자이너들이 밀도 독립 유닛 (dp)으로 인해 포토샵이나 다른 픽셀 기반 그래픽 디자인 툴에서 안드로이드 앱 UI를 디자인하는 데 문제가 있습니다. 디자이너는 dp를 픽셀에 매핑하는 방법을 모른다. Google은 또한 dp 및 픽셀 변환에 대한 기본 공식을 제공하지만 명확한 Android UI 디자인 가이드를 제공하지 않습니다.

Android의 정의에 따르면 1pd는 160dpi 장치 (mdpi)에서 1px입니다. 따라서 mdpi 밀도의 xlarge Android 장치 용 Android 앱을 설계하려고합니다. UI 크기를 픽셀 너비 960 픽셀, 높이 720px로 정의 할 수 있습니다. 동일한 매핑 규칙을 따르면 Android 앱 화면 크기 UI 디자인 지침을 따를 수 있습니다.

픽셀 가이드 라인의 Android 앱 화면 크기

ADDED : "flexible"UI에 관심이 있다면이 라이브러리를 살펴보십시오 . 새로운 크기 단위 인 sdp (확장 가능 dp)를 제공하는 Android SDK. 이 크기 단위는 화면 크기에 비례합니다 ( SDP라이브러리에 대한 여기의 답변에서도 언급 됨 )

ADDED2 Google은 마침내 iOS Storeboard UI 개념의 유용성을 이해했으며 여기 ConstraintLayout에 Android 세계가 있습니다 : ConstraintLayout을 사용하여 반응 형 UI 구축


32

1) dp: (density independent pixels)

dp 단위로 표시되는 픽셀 수는 화면 해상도가 증가함에 따라 증가합니다 (인치당 도트 / 픽셀이 더 많을 때). 반대로 해상도가 낮은 장치에서는 dp 단위로 표시되는 픽셀 수가 줄어 듭니다. 이것은 상대적인 단위이므로 비교할 기준이 있어야합니다. 이 기준은 160dpi 화면입니다. 이것은 방정식입니다.px = dp * (dpi / 160).


2) sp: (scale independent pixels)

이 단위는 화면 dpi (dp와 유사)와 사용자의 글꼴 크기 기본 설정에 따라 조정됩니다.


삼) px: (pixels)

화면의 실제 픽셀 또는 점.


자세한 내용은 방문 할 수 있습니다

Android 개발자 안내서> Dimension
Android 개발자 안내서> 화면


29

화면 크기 안드로이드는 범주로 그룹화 ldpi, mdpi, hdpi, xhdpi, xxhdpixxxhdpi. 화면 밀도화면 영역 (예 : 인치) 내의 픽셀 수입니다. 일반적으로 인치당 도트 수 ( 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.Use sp동적 화면 크기에 따라 글꼴 크기 성장 및 수축 특히 대한

안드로이드 문서는 말합니다 :

치수를 지정할 때는 항상 dp또는 sp단위를 사용하십시오. A dp는 160에서의 픽셀의 물리적 크기에 대응하는 밀도 독립적 픽셀이다 dpi. 는 sp동일한 기본 단위이지만, 사용자의 기본 텍스트 크기가 스케일링이 측정 유닛을 사용해야하므로 텍스트 크기를 정의 할 때, (그것 규모 독립적 픽셀의)


21

휴대 전화의 화면은 픽셀 (px) 이라고 알려진 수천 개의 작은 점들로 구성됩니다 . 픽셀은 그림을 만드는 가장 작은 요소입니다. 사진이나 문구를 만들 픽셀 수가 많을수록 더 선명 해지고 스마트 폰 화면을보다 쉽게 ​​읽을 수 있습니다.

화면 해상도는 화면의 픽셀 수로 측정됩니다. 화면 해상도는 기기를 구매할 때 일반적으로 사용되는 사양이지만, 픽셀을 기준으로 화면을 생각하는 것은 물리적 크기의 개념을 무시하므로 터치 장치의 경우 실제로 중요하기 때문에 Android를 설계 할 때 실제로 유용하지 않습니다.

밀도 독립 픽셀 (dp 또는 dip)을 통해 디자이너는 대상 장치의 해상도 또는 밀도에 관계없이 예상 된 방식으로 표시되는 자산을 만들 수 있습니다.

밀도 독립 픽셀 (dp 또는 dip)은 기준 밀도 또는 160dpi (dots per inch)에서 1 픽셀과 같습니다.

1px / 1dp = 160dpi / 160dpi

2px / 1dp = 320dpi (2x) / 160dpi

어디,

dpi는 인치당 도트입니다

따라서 320dpi에서 1dp는 2px와 같습니다.

공식

px / dp = dpi / 160dpi

인치당 도트 수 (dpi)는 디스플레이 화면의 선명도 (즉, 조명 포인트의 밀도)를 측정 한 것입니다. 동일한 수의 픽셀이 다른 공간에 분산되어 있기 때문에 주어진 화면 해상도의 인치당 도트 수는 전체 화면 크기에 따라 다릅니다.

밀도 독립 픽셀을 사용하면 픽셀 해상도는 같지만 공간이 다른 두 개의 장치가있는 상황을 처리 할 수 ​​있습니다. 경우에 따라 태블릿과 휴대폰의 픽셀 해상도가 각각 1280 x 800 픽셀 (160 dpi) 및 800 x 1280 픽셀 (320 dpi) 인 것으로 가정합니다.

태블릿은 기본 밀도 (160dpi)이므로 물리적 및 밀도 독립적 픽셀 크기는 1280 x 800과 같습니다. 반면 휴대 전화의 픽셀 밀도는 더 높으므로 물리적으로 절반의 밀도 독립 픽셀을 갖습니다. 픽셀. 따라서 휴대 전화는 400 x 640 밀도 독립 픽셀을 갖습니다. 따라서 밀도에 독립적 인 픽셀을 사용하면 태블릿보다 휴대 전화보다 훨씬 더 많은 공간이 있다는 것을 정신적으로 쉽게 파악할 수 있습니다.

마찬가지로 화면 크기는 비슷하지만 픽셀 밀도가 다른 두 장치가있는 경우 하나는 800 x 1280 픽셀 (320 dpi)이고 다른 하나는 400 x 640 픽셀 (160 dpi)이라고 말하면 완전히 정의 할 필요는 없습니다. 두 장치에 대해 동일한 밀도 독립 픽셀로 자산을 측정 할 수 있으므로이 두 장치에 대해 서로 다른 레이아웃을 사용합니다.

800 x 1280 픽셀 (320dpi) = 400 x 640 밀도 독립 픽셀 (dp)

400 x 640 픽셀 (160 dpi) = 400 x 640 밀도 독립 픽셀 (dp)

스케일 독립 픽셀 (sp) 은 글꼴 크기에 선호되는 단위입니다. 접근성을 위해 Android에서는 사용자가 기기의 글꼴 크기를 맞춤 설정할 수 있습니다. 텍스트를 읽는 데 문제가있는 사용자는 장치의 글꼴 크기를 늘릴 수 있습니다. 일반적으로이 옵션은 폰 또는 태블릿의 디스플레이 설정에서 글꼴 크기로 찾을 수 있습니다. 접근성 설정을 통해서도 종종 사용 가능합니다.

스케일 독립 픽셀의 경우 장치의 글꼴 크기가 정상이거나 100 % 인 경우 16 sp는 16dp와 정확히 동일합니다. 그러나 장치의 글꼴 크기 (예 : 125 %)가 크면 16 sp는 20dp 또는 1.25 곱하기 16으로 변환됩니다.

글꼴 크기의 단위로 dp를 사용하는 경우 사용자가 장치의 글꼴 크기를 사용자 지정했는지 여부에 관계없이 해당 텍스트 조각의 물리적 크기는 다릅니다. sp 단위를 사용하면 시력이 손상된 사람들에게 더 나은 경험을 제공 할 수 있습니다.

참조 : Udacity , Google


19

sp : 스케일 독립 픽셀

사용자의 장치에서 사용중인 글꼴 크기에 따라 자동으로 크기가 조정되므로 텍스트와 함께 사용해야합니다.

px : 픽셀 또는 그림 요소는 화면의 단일 지점입니다


19

픽셀 밀도

화면 픽셀 밀도 및 해상도는 플랫폼에 따라 다릅니다. 장치 독립적 픽셀 및 확장 가능 픽셀은 플랫폼에 걸쳐 디자인을 수용 할 수있는 유연한 방법을 제공하는 단위입니다.

픽셀 밀도 계산

1 인치에 맞는 픽셀 수를 픽셀 밀도라고합니다. 고밀도 스크린은 저밀도 스크린보다 인치당 픽셀 수가 더 많습니다.

1 인치에 맞는 픽셀 수를 픽셀 밀도라고합니다. 고밀도 화면은 저밀도 화면보다 인치당 픽셀 수가 더 많습니다. 결과적으로 동일한 픽셀 크기의 UI 요소는 저밀도 화면에서는 더 크게 나타나고 고밀도 화면에서는 더 작아집니다.

화면 밀도를 계산하려면 다음 방정식을 사용하십시오.

화면 밀도 = 픽셀 단위의 화면 너비 (또는 높이) / 인치 단위의 화면 너비 (또는 높이)

고밀도 밀도 대 저밀도 디스플레이

밀도 독립

화면 픽셀 밀도 및 해상도는 플랫폼에 따라 다릅니다. 장치 독립적 픽셀 및 확장 가능 픽셀은 플랫폼에 걸쳐 디자인을 수용 할 수있는 유연한 방법을 제공하는 단위입니다.

픽셀 밀도 계산 인치에 맞는 픽셀 수를 픽셀 밀도 라고합니다 . 고밀도 스크린은 저밀도 스크린보다 인치당 픽셀 수가 더 많습니다.

밀도 독립 은 밀도가 다른 화면에 UI 요소가 균일하게 표시되는 것을 말합니다.

dp (“ ”으로 발음)로 작성된 밀도 독립적 픽셀 은 모든 화면에서 균일 한 크기로 확장되는 유연한 장치입니다. 재질 UI는 밀도 독립적 픽셀을 사용하여 밀도가 다른 화면에 요소를 일관되게 표시합니다.

  1. 밀도 독립성과 함께 표시되는 저밀도 화면
  2. 밀도 독립으로 표시되는 고밀도 화면

전문 읽기 https://material.io/design/layout/pixel-density.html


16

픽셀 (px) – 화면의 실제 픽셀에 해당합니다. 너비 또는 높이에 절대 픽셀로 표시하려는 경우에 사용됩니다.

밀도 독립적 픽셀 (dp 또는 dip) – 화면의 물리적 밀도를 기반으로하는 추상 단위입니다. 이 단위는 160dpi 화면을 기준으로하므로 160dpi 화면에서 1dp는 1 픽셀입니다. dp 대 픽셀의 비율은 화면 밀도에 따라 변경되지만 반드시 직접 비율로 변경되는 것은 아닙니다. 참고 : 컴파일러는 "dip"및 "dp"를 모두 허용하지만 "dp"는 "sp"와 더 일치합니다.

스케일 독립 픽셀 (sp) – 이것은 dp 단위와 비슷하지만 사용자의 글꼴 크기 환경 설정에 따라 스케일됩니다. 글꼴 크기를 지정할 때이 단위를 사용하는 것이 좋으므로 화면 밀도와 사용자 기본 설정 모두에 맞게 조정됩니다.

항상 dp와 sp 만 사용하십시오. 폰트 크기는 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/


15

이해하기 쉬운 방법을 제공하고 싶습니다 dp. 사실, dp이해하기 가장 쉬운 방법 이라고 생각 합니다. dp실제 길이 단위입니다. 이 같은 차원의의 mminch. 우리가 작성하는 것이 단지 편리 50dp, 60dp보다는 50/160 inch60/160 inch하나 때문에, dp그냥 1/160 inch화면 크기 나 해상도가 무엇이든.

유일한 문제는 일부 화면의 안드로이드 dpi가 정확하지 않다는 것입니다. 예를 들어 160dpi로 분류 된 화면에는 실제로 170dpi가있을 수 있습니다. 따라서 계산 결과 dp가 흐릿합니다. 대략와 동일해야합니다 1/160 inch.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.