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
728x90

++++안드로이드 어플 한글화 하기++++

 

1.우선 자신의 PC에 JAVA 환경이 필요 합니다...

   아래 링크에서 받으세요...

   http://www.oracle.com/technetwork/java/javase/downloads/jdk6-jsp-136632.html

 

   JDK 설치방법:

    http://trend21c.tistory.com/666

 

2.JAVA를 설치 하셨다면 다음으로 apktool 을 설치 합니다...

   아래 링크에서 받으실수 있습니다...

   http://code.google.com/p/android-apktool/downloads/detail?name=apktool-1.3.1.tar.bz2

   http://code.google.com/p/android-apktool/downloads/detail?name=apktool-install-windows-2.2_r01-2.tar.bz2

 

3.apktool을 받으셨다면 apktool을설치 하셔야 합니다...

   압축을 풀어서 나온 apktool.jar , aapt.exe , apktool.bat 이 파일을 D:\에 apktool 폴더를

   만들어 넣어줍니다.
   - 시작 => 실행 => cmd 확인

 

   - D드라이브로 변경(D: 입력 엔터)

   - D드라이브로 바꾸었으면 apktool폴더로 이동(cd apktool 인력 엔터)
   - D:\apktool 요렇게 이동 하셨으면 apktool 입력하고 엔터합니다.

 

  - 그럼 apktool이 설치 됩니다...

  - 아래 스샷처럼 apktool 사용법이 나오면 설치가 된것입니다...

 

4.자 이제 apktool이 설치 되었다면 준비는 다 되었네요...

 

  실제로 gameboid.apk 라는 어플을 한글화 해볼까요...

 

1.시작-실행-cmd입력 도스창 활성

 

2.D:\apktook\apktool d gameboid.apk gameboid 라고 입력 하고 엔터 ...

  (위 명령은 gameboid.apk라는 어플을 해당 디렉토리 gameboid라는 폴더에 풀어놓으라는 뜻)

 

 그러면 잠시후 gameboid 라는 폴더가 생기면서 gameboid폴더안에 gameboid.apk어플의

 패키지가 들어 있는걸 볼수 있습니다...

 

3.보통 텍스트 파일은 gameboid 라는 폴더안에 res - values 폴더를 열어보면 strings.xml

  이 있는데 이것이 텍스트 파일입니다...(물론 다른곳에 있을수도 있슴)

 

4.텍스트 파일을 찿으셨으면 notepad++로 strings.xml 를 열어 수정 하시면 됩니다...

   notepad++ 는 아래에서 받으세요

   http://korean.trailsframework.org/lv/group/view/kl36301/Notepad%2B%2B.htm

 

아래 스샷에 보이는 검은색 굵은 글자들을 수정 하시면 됩니다...^^

 

5.이제 풀어놓은 어플을 다시 합쳐야 합니다...

  D:\apktook\apktool b gameboid 라고 입력 하고 엔터...

  (위 명령은 풀어놓은 gameboid 폴더에 있는 내용을 다시 합치라는 명령)


  그럼 gameboid 폴더안에 dist폴더가 생기고 그폴더 안에 apk파일 이 생성 되 있습니다..

 

6.자 이제 마지막으로 생성된 apk파일을 sign(인증) 만 하면 됩니다...

   사인 하는 방법은 여러 가지가 있습니다...

   다만 방법이 복잡하고 몬가 좀 어플 개발자들에게 누가되는거 같아..

   옆동네 모티즌에서 올라와 있는 인증방법으로 설명 드립니다...

  

   생성된 파일을 motizen.apk 로 이름을 바꾼후 사인 프로그램 폴더안에 넣고 Sign.bat 를 실행

   잠시후 motizen_signed.apk 라는 파일이 생성됩니다.

 

 

7. 이제 인증완료된 apk 파일을 적당히 이름을 바꾸시고 설치해 보시면 한글로 바뀐걸 보실 수 있을겁니다...

+ Recent posts