2011-09-13 2 views
12
http://developer.android.com/guide/practices/screens_support.html http://developer.android.com/guide/practices/screens_support.html

Android : 'dp'에서 'px'로 전환 하시겠습니까?

안드로이드가 dp 단위를 px 단위로 변환하는 공식은 다음과 같습니다 :

 px = dp * (dpi/160) 

예를 들어, dpi가 240 일 때 px = 1.5를 얻을 수 있습니다 (단 하나의 dp 픽셀을 계산 중입니다).

그러나 정확히 1.5는 무엇을 의미합니까? px 단위가 실제로 물리적 장치 픽셀이되면 Android가 1 또는 2 픽셀을 그립니다.

답변

15

상황에 따라 다릅니다. DP 값의 크기를 의미하는 맥락에서 사용되는

경우 android:layout_width 속성처럼 Resources.getDimensionPixelSize()에 기술 된 논리를 사용한다. 즉 PXPX> 0 인 경우 실제 값이 될 경우, 적어도 1

DP 값이면 그 특별한 경우에, 가장 가까운 정수 값으로 반올림되고, 인 인세 트 Drawable의 android:insetLeft 속성과 같이 오프셋을 의미하는 컨텍스트에서 사용되는 경우 Resources.getDimensionPixelOffset()에 대해 설명 된 논리가 사용됩니다. 즉, px 값은 단순히 정수 값으로 잘립니다.

셰이프 드로어 블의 <stroke/> 태그의 android:dashWidth 속성과 같이 수정되지 않은 부동 소수점 값이 사용되는 경우가 있지만이 방법은 거의 없습니다. 일반적으로 부동 소수점 값을 사용할 수 있더라도 크기 또는 오프셋 논리가 사용됩니다.

+0

흠, 그게 내가 찾고 있었던거야! 내가 왜 설명서가 표시되지 않습니다 궁금해 ... 고마워요 마틴! –

2

정확히 읽으면 1.5px는 단일 '1'픽셀이 지정된 색상이고 주변 픽셀의 .5 픽셀이 '1'픽셀과 다음 픽셀이 혼합되어 있음을 의미합니다 그것에.

예.

| A | AB | B |

A는 1.5px이고 B는 1.5x이므로 중간 픽셀은 둘 다 혼합되어 있습니다.

그래서 두 픽셀이 서로 옆에 1 픽셀의 디스플레이

을 함께 예 : 혼합됩니다 사용한다는 | X | Y | 1.5px 디스플레이 지금

:

| XY | YX | 둘 다 혼합되어 있습니다! X로 설정된 픽셀은 Y로 설정된 픽셀보다 X가 더 많습니다.

+0

흥미로운 내용이지만 기사에서 말하는 내용이 아닌 것 같습니다. 색깔에 대해서는 전혀 말하지 않습니다. 나는 그들이 1.5가 실제로 의미하는 것을 말하는 것을 잊었다 고 생각한다. 나는 이것을 말하기 싫지만 이것이 내가 애플을 사랑하는 곳이다. 그들의 문서가 훨씬 정확합니다! –

+0

아, Android 문서에서 읽지 않았습니다. 최신 OS 및 기타 응용 프로그램의 공통된 특징입니다. 예를 들어 웹의 글꼴은 1.5 픽셀 일 수 있으며 매우 자주 사용됩니다. 브라우저는 제가 설명한 것과 비슷한 것을 계산합니다. – Micky

1

px는 1 픽셀입니다. 글꼴 크기에 sp를 사용하고 다른 모든 것에 dip을 사용하려는 비례 독립 픽셀 (sp) 및 밀도 독립 픽셀 (dip)

INT valueInPx = (int)를 TypedValue.applyDimension :

딥 == DP

여기에서

px 
Pixels - corresponds to actual pixels on the screen. 

in 
Inches - based on the physical size of the screen. 

mm 
Millimeters - based on the physical size of the screen. 

pt 
Points - 1/72 of an inch based on the physical size of the screen. 

dp 
Density-independent Pixels - an abstract unit that is based on the physical density of the screen. These units are relative to a 160 dpi screen, so one dp is one pixel on a 160 dpi screen. The ratio of dp-to-pixel will change with the screen density, but not necessarily in direct proportion. Note: The compiler accepts both "dip" and "dp", though "dp" is more consistent with "sp". 

sp 
Scale-independent Pixels - this is like the dp unit, but it is also scaled by the user's font size preference. It is recommend you use this unit when specifying font sizes, so they will be adjusted for both the screen density and user's preference. 
관련 문제