728x90

링크 : http://linuxforge.tistory.com/60
링크 : http://www.jopenbusiness.com/tc/oss/entry/Android-UI

안드로이드 화면단위에 대한 용어 정리와 화면크기를 구하는 방법에 대해서 기술되어있습니다.

 

사이즈 구하기
view source
1 Display dis = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
2 mDisWitdh = dis.getWidth();            // 가로 사이즈
3 mDisHeight = dis.getHeight();          // 세로 사이즈

해상도 구하기
view source
1 DisplayMetrics metrics = new DisplayMetrics();
2       getWindowManager().getDefaultDisplay().getMetrics(metrics);
3 Dpi = metrics.density;  // 해상도
 

 

 


안드로이드는 다양한 화면 크기를 가지고 있는 스마트폰을 제공하고 있습니다. 그래서 안드로이드 UI에 대해서 간단히 정리를 해 봅니다. 안드로이드폰을 회전 하였을 경우의 처리는 다음 기회에 올리 겠습니다.

Android UI
 용어 정의
density 
밀도 (density)
물리적인 길이 안에 포함된 픽셀(px)의 수
dpi : density per inch
QVGA : 120 dpi, HTC Tatii
HVGA : 160 dpi, 안드로원, HTC G1
WVGA : 240 dpi, 넥서스원, 갤럭시A, 갤럭시S, 베가, 시리우스, 이자르
FWVGA : 240 dpi, 모토로이, 드로이드
Google Android에서의 dpi
ldpi : Low density, 120 dpi
mdpi : Midium density, 160 dpi
hdpi : High density, 240 dpi (이미지 작성시 기준)
dip 
Density-independent pixel
160 pixels을 기본 밀도(160 dip)로 하여 작성된 밀도에 독립적인 가상의 단위
pixels = dips * (density / 160)
dips = pixels * 160 / density
density로는 Android의 dpi를 사용할 것
Resolution 
해상도, 화면의 전체 픽셀 수
예) 240 * 320
 화면 크기
Screen Size 구하기
DisplayMetrics displayMetrics = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int pxWidth  = displayMetrics.widthPixels;
int pxHeight = displayMetrics.heightPixels;

//--- displayMetrics.density : density / 160, 0.75 (ldpi), 1.0 (mdpi), 1.5 (hdpi)
int dipWidth  = displayMetrics.widthPixels  / displayMetrics.density;
int dipHeight = displayMetrics.heightPixels / displayMetrics.density;
 
Activity에서 화면 크기 구하는 방법

 

 

  StringBuffer buf = null;
     WindowManager wm = null;
     Display display = null;
     DisplayMetrics metrics = null;
     
     wm = getWindowManager();
     display = wm.getDefaultDisplay();
     metrics = new DisplayMetrics();
     display.getMetrics(metrics);
     
     buf = new StringBuffer();
     buf.append("Window display id: " + display.getDisplayId() + "\n");
     buf.append("Window orientation: " + display.getOrientation() + "\n");
     buf.append("Window width: " + display.getWidth() + "\n");
     buf.append("Window height: " + display.getHeight() + "\n");
     buf.append("Window pixel format: " + display.getPixelFormat() + "\n");
     buf.append("Window refresh rate: " + display.getRefreshRate() + "\n");
     buf.append("Window width pixels: " + metrics.widthPixels + "\n");
     buf.append("Window height pixels: " + metrics.heightPixels + "\n");
     testMsg.setText(buf.toString());

 

 


 

갤럭시S의 화면 크기
세로 화면 크기
Window display id: 0
Window orientation: 0
Window width: 320
Window height: 533
Window pixel format: 5
Window refresh rate: 68.0
Window width pixels: 320
Window height pixels: 533
가로 화면 크기
Window display id: 0
Window orientation: 1
Window width: 533
Window height: 320
Window pixel format: 5
Window refresh rate: 68.0
Window width pixels: 533
Window height pixels: 320
 Resource
/res/layout/
layout-small, layout-large
/res/drawable/
drawable-ldpi, drawable-mdpi, drawable-hdpi, drawable-nodpi
Dimensions
/res/values/dimensions.xml
<resources>
    <dimen name="size">10dip</dimen>
</resources>

int size = getResources().getDimensionPixelSize(R.dimen.length);
 화면 회전
회전 상태 확인
Android 2.1
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();

//--- orientation : 0. 세로, 1. 가로
int orientation = display.getOrientation();
Android 2.2
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();

//--- Surface.ROTATION_0   : 세로
//--- Surface.ROTATION_90  : 가로
//--- Surface.ROTATION_180 : 세로
//--- Surface.ROTATION_270 : 가로
int rotation = display.getRotation();
화면 회전 금지
AndroidManifest.xml에서 모든 Activity에 다음을 추가 한다.
android:screenOrientation="portrait"       //--- 세로 고정
android:screenOrientation="landscape"      //--- 가로 고정
참고 문헌
안드로이드 UI 디자인 패턴, 2010.5.19 by Google
Icon Design Guidelines, Android 2.0
Supporting Multiple Screens, 2010.5

*** 참고 문헌 ***
오픈소스 비즈니스 컨설팅 - Android
오픈소스 비즈니스 컨설팅 - Android SDK

 

원문 : http://dhna.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%ED%99%94%EB%A9%B4-%ED%81%AC%EA%B8%B0-%EA%B5%AC%ED%95%98%EA%B8%B0

'모바일 > 안드로이드' 카테고리의 다른 글

안드로이드 어플 한글화 해보기  (1) 2010.08.18

+ Recent posts