스마트기기개발관련/안드로이드 개발

안드로이드 해상도 화면관련

AlrepondTech 2012. 3. 19. 16:14
반응형

 

 

=================================

=================================

=================================

 

 

 

 

 

해상도 관련 계산 사이트

http://members.ping.de/~sven/dpi.html

//------------------------------------------------------

출처: http://www.jopenbusiness.com/tc/oss/entry/Android-UI

안드로이드는 다양한 화면 크기를 가지고 있는 스마트폰을 제공하고 있습니다. 그래서 안드로이드 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"      //--- 가로 고정 
  • 참고 문헌

*** 참고 문헌 ***

 

 

=================================

=================================

=================================

 

 

 

 

반응형