dp、px、pt、sp

2594 단어
sp가 뭐예요?
dp(dip): device independent pixels(장치 독립 픽셀).서로 다른 장치는 서로 다른 디스플레이 효과가 있는데 이것은 장치 하드웨어와 관련이 있다. 일반적으로 우리는 WVGA, HVGA, QVGA를 지원하기 위해 픽셀에 의존하지 않고 이것을 사용하는 것을 추천한다.
px:pixels(픽셀).서로 다른 장치의 디스플레이 효과가 같다. 일반적으로 우리 HVGA는 320x480 픽셀을 대표하는데 이것은 비교적 많이 사용한다.
pt:point는 표준적인 길이 단위로 1pt=1/72인치로 인쇄업에 사용되며 매우 간단하고 쉽다.
sp:scaledpixels(픽셀 확대).주로 best for textsize 글꼴에 사용됩니다.
이로써 구글의 조언에 따르면 TextView의 글자 번호는 sp를 단위로 하는 것이 가장 좋고 TextView의 원본 코드를 보면 안드로이드는 기본적으로 sp를 글자 단위로 사용하는 것을 알 수 있다.
그리고 구글 코드에 사용되는 단위는 px를 기본 단위로 합니다.
apk의 자원 패키지에서 화면 density=240에서hdpi 라벨의 자원을 사용합니다. 화면 density=160에서mdpi 라벨의 자원을 사용합니다. 화면 density=120에서ldpi 라벨의 자원을 사용합니다.160인치당 모니터에서 1dp = 1px.
다음은 몇 가지 서로 다른 단위의 상호 전환이다.
public static int dip2px(Context context, float dipValue){ 
final float scale = context.getResources().getDisplayMetrics().density; 
return (int)(dipValue * scale + 0.5f); 
} 
public static int px2dip(Context context, float pxValue){ 
final float scale = context.getResource().getDisplayMetrics().density; 
return (int)(pxValue / scale + 0.5f); 
} 
public static int dip2px(Context context, float dipValue){ 
final float scale = context.getResources().getDisplayMetrics().density; 
return (int)(dipValue * scale + 0.5f); 
} 
public static int px2dip(Context context, float pxValue){ 
final float scale = context.getResource().getDisplayMetrics().density; 
return (int)(pxValue / scale + 0.5f); 
}

해상도를 가져오는 방법은 다음과 같습니다. Activity의 onCreate 메서드에 다음 코드를 기록합니다.
        DisplayMetrics metric = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metric);
        int width = metric.widthPixels;  //     (  )
        int height = metric.heightPixels;  //     (  )
        float density = metric.density;  //     (0.75 / 1.0 / 1.5)
        int densityDpi = metric.densityDpi;  //     DPI(120 / 160 / 240)

안드로이드에서 1pt는 2.22sp 이상으로 참고할 수 있으며 UI가 sp 단위로 디자인을 제공하는 것이 가장 좋고 디자인에 sp의 개념이 없으면 개발자도 적당한 환산을 통해 근사치를 얻을 수 있다.
과거에 프로그래머는 보통 픽셀 단위로 컴퓨터 사용자 인터페이스를 설계했다.예를 들어, 열 사이의 간격은 5픽셀이고 아이콘 크기는 16인 300픽셀의 양식 필드를 정의합니다.×16 픽셀 등.이 처리의 문제는 인치당 포인트 (dpi) 가 더 높은 새 모니터에서 프로그램을 실행하면 사용자 인터페이스가 작아 보인다는 것이다.일부 경우 사용자 인터페이스가 내용을 보기 어려울 정도로 작을 수도 있다.해상도와 무관한 도량 단위가 이 문제를 해결할 수 있다.Android는 다음 단위를 모두 지원합니다.px (픽셀): 화면의 점.인치: 길이 단위.mm(mm): 길이 단위.pt(파운드): 1/72인치.dp (밀도와 무관한 픽셀): 화면 밀도를 바탕으로 하는 추상적인 단위입니다.160인치당 모니터에서 1dp = 1px.dip: dp와 같이 android/ophone 예시에 많이 사용됩니다.sp (눈금과 무관한 픽셀): dp와 유사하지만 사용자의 글꼴 크기 설정에 따라 축소할 수 있습니다.
... 에서 오다http://www.cnblogs.com/chiao/archive/2011/07/07/2100216.html

좋은 웹페이지 즐겨찾기