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

주요 안드로이드 기기 개발 해상도, DIP, DP, DPI, DENSITY 정리 관련

AlrepondTech 2020. 9. 19. 04:05
반응형

 

 

 

 

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

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

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

 

 

 

 

 

 

 

How Android Supports Multiple Screens

(원문펌 http://overoid.tistory.com/9)

 

 안드로이드에서는 런타임시에 아래 3 가지 방식 중 하나로 다양한 화면을 지원합니다 . 아주 중요한 내용입니다 .


i) Pre -Scaling ( 보통 bitmap 이미지 처리시에)

 Pre -Scaling 은 로딩시점에 크기를 조절합니다 . CPU 에 이득이 있다고 알려져 있습니다. Pre -Scaling 은 폰의 Density 를 기준으로 동일한 dpi 디렉토리에 지정된 리소스를 로딩하며 이때는아무런 크기 변환없이 보여줍니다 . 즉 폰이 hdpi density 라면 res/drawable-hdpi 디랙토리 하위의 리소스를 먼저 찾아서 있다면 아무런 크기 변환없이 그대로 보여주게 됩니다. 만일 매칭되는 리소스가 없다면 디폴트 리소스 (basline) 를 로딩하고 로딩 시에 적합한 density로 크기 변환을 합니다 . 예를들어 res/drawable-mdpi/ 에 100*100 아이콘만 존재한다고 할 때 만일 폰의 사양이 hdpi 라면 안드로이드는 drawable-mdpi 하위의 아이콘을 읽을때 자동으로 크기를 확대해서 150 * 150 bitmap 을 만듭니다. 반대로 drawable-hdpi/ 에 150*150 아이콘만 존재할 때 mdpi 폰에서 읽으면 자동으로 100*100 아이콘으로 크기를 변환합니다 . drawable-hdpi 및 drawable- mdpi에 모두 이미지가 존재한다면 별도의 스케일 변환 작업이 필요없으니 좀 더 성능에 유리 합니다.

 

 ii) Auto-scaling (pixel dimensions and coordinates)

 Auto-scaling 은 그리는 시점에 크기를 조절합니다 . 메모리에 이득이 있다고 알려져 있습니다 . 주로 Pixel 좌표, Pixel Dimesion 값, Application 에서 사용된 Pixel 수식 등에 적용되며, 리소스가 아닌 웹이나 SD카드에서 Bitmap 데이터를 가져왔을 때도 적용됩니다. 쉽게 얘기하면 App에서 ( 10,10) 에서 (100,100) 좌표로 4각형을 그리도록 구현했다면 High -Density(240dpi) 화면을 가진 Device 에서는 그리는 시점에 자동으로 스케일을 변환해서 (15,15) (150,150) 좌표에 사각형을 그리게 된다 .

 

ii) Compatibility Mode (호환모드)

 Large 스크린을 지원 안하는 앱을 Large 스크린에서 실행하면 검은 배경에 원래 크기만큼만 표시합니다. 보기에는 별로입니다 . 앱이 싼티 납니다. 아 .. 여전히 복잡하고 어렵군요 . 원문 보시면 좀 더 상세하지만 복잡한 내용들로 가득 차 있습니다. 중요한 점은 안드로이드가 여러 화면사이즈를 지원하기 위해서 런타임시에 자동으로 크기를 바꾼다는 것을 기억하십시요 .

 

 

제가 사용하는 기본 레이아웃 디자인 룰은 다음과 같습니다 .

 

 i) 레이아웃 디자인시에는 HVGA 기본 스크린 사이즈를 중심으로 DIP 단위만을 사용해서 디자인합니다. px과 dip가 1:1 이라서 화면 크기에 대응하여 사이즈 결정하기가 좋습니다. 320 * 480 화면 기준으로 들어갈 이미지나 UI 요소들 각각의 가로 사이즈를 px로 계산한 후 코딩시에는 그 값의 단위를 dip 로만 입력하 면 됩니다 .

 

 ii) AbsoluteLayout 을 사용하지 않습니다. 즉 , 화면의 절대 좌표 보다는 상대 좌표를 사용해야 합니다. 이거 사용해서 디자인하면 ..나중에 감당 안됩니다 .


 iii) Bitmap 은 HDPI 기준으로 만듭니다. 그래야 자동으로 크기가 조정 되더라도 보기에 좋습니다. 즉  HVGA 를 기준으로 계산했을 때 100 * 100 이미지가 필요하다면 HDPI 기준으로 크기의 1.5 배인 150 *150 크기로 실 이미지를 제작하시면 됩니다. 만일 여력이 된다면 hdpi 및 mdpi 기준으로 각각 만드는 것도 나쁘지는 않습니다. 위에서 언급했듯이 성능에 유리합니다.

 

iv) 각 장치별로 레이아웃 및 이미지를 모두 별도로 만들어서 세밀하게 조정할 수도 있지만 그런 경우 관리가 힘듭니다 . 가급적 레이아웃과 이미지를 적게 사용해서 통일된 UI를 구성하는 것이 좋습니다.

 

 

스마트폰 해상도관련 사항

 

2.1 가로/세로 값 

    this.getWindowManager().getDefaultDisplay().getWidth();

    this.getWindowManager().getDefaultDisplay().getHeight();

    context.getResources().getDisplayMetrics().widthPixels
    context.getResources().getDisplayMetrics().heightPixels

    context.getResources().getDisplayMetrics.density

 

2.2 주의 사항

  i) 3요소가 일치해야 한다

    <uses-sdk android:minSdkVersion="8" />... .

    프로젝트 만들때 Build target설정에서 Platform 2.2버젼...

    스마트폰의 안드로이드 OS 버젼(2.2)...

  

  ii) 스마트폰이나 에뮬의 버젼이 제일 최신버젼이어야 한다

      스마트폰의 안드로이드 OS 버젼을 최대기준으로 볼 때 uses-sdk Build target이 적거나 같아야 한다.

 

   iii) 결론

일반적으로 대부분의 스마트폰 해상도는 480*800아나 위의 두 가지 조건이 맞지 않으면 320*533으로 나올 것이다예를 들어 스마트폰은 2.2버젼인데 새로나온 2.3버젼인 9API로 프로젝트를 만들면 해상도는 320*533으로 나올 것이다.

 

2.3 해상도 테스트

  i)    AndroidManifet 상에

       <supports-screens android:largeScreens = ”true” android:normalScreens = ”true”

         android:smallScreens = ”true” android:anyDensity = ”true”/>

  ii)    글자의 크기는 XML상에 px가 아닌 sp로 할 것.

  iii)    Widget의 크기 및 padding dip로 사용할 것.

  iv)    Layout은 LinearLayout 이나 RelativeLayout 등을 사용할 것

  v)    안드로이드 에뮬레이트 안의 AVD manager Add해서 해상도를 여러 개 적용하여 테스트하면

       도움이 될 것임.

 

 

해상도 밀도 관련 : (구글크롬으로 접속해서 번역하면 쉽게 이해 볼수 있당)

http://developer.android.com/guide/practices/screens_support.html

 

참고 http://www.kandroid.org/guide/practices/screens_support.html

  

스마트폰 해상도 정리

참고 : http://blog.naver.com/handyson/120391295

 

 

출처 : http://www.cyworld.com/vbman/7512218 [어깨 너머로 배우는 IT^^!]

 

출처: http://blog.naver.com/PostView.nhn?blogId=haengro&logNo=40153157509

 

—QVGA(240x320), 120dpi : HTC Tatoo

—HVGA(320x480), 160dpi : 안드로원, HTC G1

—WVGA(480x800), 240dpi : 넥서스원, 갤럭시A

—FWVGA(480x854), 240dpi : 모토로이

 

1. Low desity 120 - ldpi

    QVGA(240x320)  : 2.6~3.0

    WQVGA(240x400) : 3.2~3.5

    FWQVGA(240X432) : 3.5~3.8

 

2. Medium density 160 - mdpi

   HVGA(320X480) : 3.0~3.5

   WVGA(480x800) : 4.8~5.5

   FWVGA(480X854) : 5.0~5.8

 

3. High density 240 - hdpi

   WVGA(480x800) : 3.3~4.0

   FWVGA(480X854) : 3.5~4.0

 

4. x High density 320 - xhdpi

    (720*1280)

 

갤럭시탭 10.1

drawable-xlarge-mdpi

layout-xlarge 또는 layout-1280x800

 

갤럭시탭 7.0

drawable-large-hdpi

layout-1024x600

 

일반폰 (480x800)

drawable-hdpi

layout

 

HD폰(1280x720)

drawable-xhdpi

layout-1280x720

 

 

갤럭시넥서스: layout-sw360dp

갤럭시노트: layout-xhdpi-1280x800 (or layout-normal-xhdpi)

갤럭시탭10.1: layout-xlarge-mdpi(3.2이상 버전에서는 layout-sw800dp로도 가능)

HD(1280x720)폰: layout-xhdpi-1280x720 (layout-normal-xhdpi)

HTC Evo4g: layout-hdpi-960x540

 

 

res/layout/ 폴더를 더더욱 구분하여 스마트폰의 해상도별 xml을 나눌뿐만 아니라

 

태블릿도 구분할수 있게되었어요(원래 그랬던건지..그냥 새로 만들어준건지는 나도몰라아아아)

 

res/layout/main_activity.xml          -> 스마트폰

res/layout-sw600dp/main_activity   -> 7인치 태블릿

res/layout-sw720dp/main_activity   -> 10인치 태블릿

 

public class MyActivity extends Activity {

    @Override protected void onCreate(Bundle savedInstanceState) {

        super.onCreate();

        Configuration config = getResources().getConfiguration();

        if (config.smallestScreenWidthDp >= 600) {

            setContentView(R.layout.main_activity_tablet);

        } else {

            setContentView(R.layout.main_activity);

        }

    }

}

 

—리소스포더이름으로구분처리

서로다른스크린의리소스관리

 - res/layout/my_layout.xml

Normal스크린사이즈레이아웃

 - res/layout-small/my_layout.xml

Small 스크린사이즈레이아웃

 - res/layout-large/my_layout.xml

Large 스크린사이즈레이아웃

 - res/drawable-ldpi/my_icon.png

Low density를위한아이콘

 - res/drawable-mdpi/dpi/my_icon.png

MediumDensity를위한아이콘

 - res/drawable-hdpi/my_icon.png

High Density를위한아이콘

 - res/drawable-nodpi/composite.xml

Density 와무관한리소스

 

—밀도(Density)

—스크린해상도를기반으로물리적인넓이와높이안에얼마나많은픽셀이들어있는가를나타낸다. Lower density의스크린에서는같은넓이와높이안에더적은수의픽셀이있고, higher density의스크린에서는같은넓이와높이안에더많은수의픽셀이있다. 안드로이드는밀도를high, medium, low 세가지분류로나눈다. 플랫폼에서는실제스크린밀도에맞게리소스들의사이즈를조정한다.

—Density-independent pixel (dip)

—밀도와상관없이레이아웃의위치를표현할때사용하는가상의pixel 단위. Density-independent pixel 은기본밀도인160dip에서의물리적읶pixel과같다.

—픽셀변환공식pixels = dips * (density / 160)

 

 

아...저 토나오는 광경...같은게 하나도 없는 물건들...

 

갤럭시 노트

해상도  :  1280 * 800

Density  :  xhdpi

크기  :  5.3인치(large screen)

OS  :  Android 2.3 갤럭시 S2

해상도  :  800 * 480

Density  :  hdpi

크기  :  4.3인치(normal screen)

OS  :  Android 2.3  갤럭시 탭 10.1

해상도  :  1280 * 800

Density  :  mdpi

크기  :  10.1인치(xlarge screen)

OS  :  Android 3.0

 

안드로이드 마켓에 릴리즈시 하나의 어플리케이션에 두개의 APK파일을 등록할 수 있는 MultipleScreens 기능이 있다.

 

AndroidManifest.xml 의 스크린사이즈가 다르거나 SDK Version이 다른 두개의 APK파일을 업로드 

 

하여 Publish하면 되는거..

하지만 해상도의 구분이 애매하였다.

열심히 구글링을 해보면...아래값들을 컨트롤하면 된다.

 

smallScreens = true (normalScreens 보다 작은 사이즈 지원)

normalScreens = true (normalScreens 사이즈 지원)

largeScreens = true (normalScreens 보다 큰 사이즈 지원)

xlargeScreens = true (largeScreens 보다 큰 사이즈 지원)

requiresSmallestWidthDp = 600 (Android 3.2 API Level 13이후부터 지원하는 attribute. 

 

 600에 largeScreens = true, xlargeScreens = true를 설정하면 타블렛만 

 

 지원되는 어플이 된다.)

 

<supports - screens android: resizeable = ["true" | "false"]
android: smallScreens = ["true" | "false"]
android: normalScreens = ["true" | "false"]
android: largeScreens = ["true" | "false"]
android: xlargeScreens = ["true" | "false"]
android: anyDensity = ["true" | "false"]
android: requiresSmallestWidthDp = "integer"
android: compatibleWidthLimitDp = "integer"
android: largestWidthLimitDp = "integer" / >

 

즉.....2.3에선 requiresSmallestWidthDp를 사용할 수 없고, 갤노트와 갤S2는 아래와 같이 구분하여 적용

 

시키면 마켓 필터링이 가능하다.

 

*. 갤럭시 S2

 

<supports-screens

     android:smallScreens="false"

     android:normalScreens="true"

     android:largeScreens="false"

     android:xlargeScreens="false"

     android:anyDensity="true"

/>

 

 *. 갤럭시 노트

 

<supports-screens

     android:smallScreens="false"

     android:normalScreens="false"

     android:largeScreens="true"

     android:xlargeScreens="false"

     android:anyDensity="true"

/>

 

 

 

?추가로 엄청 중요한 사항이 생겼다. 위와 같이 했을 경우 마켓 릴리즈시 버전코드가 갤럭시 S2가

 

더 낮아야 한다. 즉!! 갤럭시 S2의 버전코드가 100이라면 갤럭시 노트의 버전코드는 101이 되어야

 

정상적인 릴리즈가 가능하다. 만약 갤럭시 노트의 버전 코드가 더 낮다면 빨간색 에러줄을

 

마주치게 된다. 아...이것때문에 엄청 암울했는데...ㅠㅠ

 

 

 

혹 여기서 10.1인치를 필터링 시키려면 안드로이드마켓 등록시 지원등록단말에서 수동 

 

삭제하면...ㅋㅋㅋㅋ된다.

 

 

 

 

 

내가 삽질한건??? 내가 원한건 다른 사이즈들은 다빼고 딱 normalScreens만 지원하고 싶었을 뿐인데...

 

이게 normalScreens = true로 하고, 다른 스크린을 false로 설정해도 normalScreens~xlargeScreens까지

 

지원된다는거다...

 

그래서 찾아보다가 아래와 compatible-screens를 찾게되었다. 역기서 screenSize="normal"로 설정하면

 

마켓상에서 딱!!!normalScreens만 지원된다...

 

허나...compatible-screens를 적용시키면 지원단말에서 국산단말은 제외되고, 

 

해외향 단말만 지원된다.

 

젠장...된장...진장...아래처럼 모든 Density에 모든 screenSize를 설정해도 국내향단말은 

 

지원단말에서 제외되어있다...ㅠㅠㅠㅠ

 

이걸 하나씩 확인해보다...왜 갤노트는 제외되지...왜 갤S2는 제외되지...

 

그러다 모든걸 적용시켜도 안된다는걸 알고 포기함.

 

<compatible-screens>
    <screen android:screenDensity="xhdpi" android:screenSize="small"/>
    <screen android:screenDensity="ldpi" android:screenSize="small"/>
    <screen android:screenDensity="mdpi" android:screenSize="small"/>
    <screen android:screenDensity="hdpi" android:screenSize="small"/>
    <screen android:screenDensity="xhdpi" android:screenSize="normal"/>
    <screen android:screenDensity="ldpi" android:screenSize="normal"/>
    <screen android:screenDensity="mdpi" android:screenSize="normal"/>
    <screen android:screenDensity="hdpi" android:screenSize="normal"/>
    <screen android:screenDensity="xhdpi" android:screenSize="xlarge"/>
    <screen android:screenDensity="ldpi" android:screenSize="xlarge"/>
    <screen android:screenDensity="mdpi" android:screenSize="xlarge"/>
    <screen android:screenDensity="hdpi" android:screenSize="xlarge"/>
    <screen android:screenDensity="xhdpi" android:screenSize="large"/>
    <screen android:screenDensity="ldpi" android:screenSize="large"/>
    <screen android:screenDensity="mdpi" android:screenSize="large"/>
    <screen android:screenDensity="hdpi" android:screenSize="large"/>
</compatible-screens>

 

 

1. 마지막으로 dpi구하는 공식

  context.getResources().getDisplayMetrics().density; 

2. dpi를 픽셀로 변환하는 공식

public static int convertDipToPx(Context context, int dip){

  final float scale = context.getResources().getDisplayMetrics().density;

  return (int) (dip * scale + 0.5f);

}  

 

참조 : http://sptraulyo.tistory.com/447

[출처] 안드로이드 해상도별 스크린 레이아웃|작성자 세직사

 

 

 

 

반응형

 

728x90

 

 

 

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

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

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

 

 

 

출처: http://don-forget.blogspot.kr/2012/07/blog-post_08.html

 

요샌 안드로이드 폰 종류도 너무 많고 레이아웃, 해상도도 천차 만별...

외우려면 힘드니 이곳에 정리 하려 한다.

 

갤럭시넥서스: layout-sw360dp

갤럭시노트: layout-xhdpi-1280x800 (or layout-normal-xhdpi)

갤럭시탭10.1: layout-xlarge-mdpi(3.2이상 버전에서는 layout-sw800dp로도 가능)

HD(1280x720)폰: layout-xhdpi-1280x720 (layout-normal-xhdpi)

HTC Evo4g: layout-hdpi-960x540

 

OS버전 3.2이상에서는 layout-sw800dp와 같이 너비(짧은축의 길이)의 dip값으로 하면 편리할 듯 합니다.

 

해상도별 스크린 레이아웃안드로이드 2012/02/21 12:37

QVGA(240x320), 120dpi : HTC Tatoo
HVGA(320x480), 160dpi : 안드로원, HTC G1
WVGA(480x800), 240dpi : 넥서스원, 갤럭시A
FWVGA(480x854), 240dpi : 모토로이


1. Low desity 120 - ldpi
    QVGA(240x320)  : 2.6~3.0
    WQVGA(240x400) : 3.2~3.5
    FWQVGA(240X432) : 3.5~3.8


2. Medium density 160 - mdpi
   HVGA(320X480) : 3.0~3.5
   WVGA(480x800) : 4.8~5.5
   FWVGA(480X854) : 5.0~5.8


3. High density 240 - hdpi
   WVGA(480x800) : 3.3~4.0
   FWVGA(480X854) : 3.5~4.0


4. x High density 320 - xhdpi
    (720*1280)


갤럭시탭 10.1
drawable-xlarge-mdpi
layout-xlarge 또는 layout-1280x800


갤럭시탭 7.0
drawable-large-hdpi
layout-1024x600


일반폰 (480x800)
drawable-hdpi
layout


HD폰(1280x720)
drawable-xhdpi
layout-1280x720



갤럭시넥서스: layout-sw360dp
갤럭시노트: layout-xhdpi-1280x800 (or layout-normal-xhdpi)
갤럭시탭10.1: layout-xlarge-mdpi(3.2이상 버전에서는 layout-sw800dp로도 가능)
HD(1280x720)폰: layout-xhdpi-1280x720 (layout-normal-xhdpi)
HTC Evo4g: layout-hdpi-960x540

res/layout/ 폴더를 더더욱 구분하여 스마트폰의 해상도별 xml을 나눌뿐만 아니라
태블릿도 구분할수 있게되었어요(원래 그랬던건지..그냥 새로 만들어준건지는 나도몰라아아아)


res/layout/main_activity.xml          -> 스마트폰
res/layout-sw600dp/main_activity   -> 7인치 태블릿
res/layout-sw720dp/main_activity   -> 10인치 태블릿

public class MyActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate();

        Configuration config = getResources().getConfiguration();

        if (config.smallestScreenWidthDp >= 600) {
            setContentView(R.layout.main_activity_tablet);
        } else {
            setContentView(R.layout.main_activity);
        }
    }
}



—리소스포더이름으로구분처리
서로다른스크린의리소스관리
 - res/layout/my_layout.xml
Normal스크린사이즈레이아웃
 - res/layout-small/my_layout.xml
Small 스크린사이즈레이아웃
 - res/layout-large/my_layout.xml
Large 스크린사이즈레이아웃
 - res/drawable-ldpi/my_icon.png
Low density를위한아이콘
 - res/drawable-mdpi/dpi/my_icon.png
MediumDensity를위한아이콘
 - res/drawable-hdpi/my_icon.png
High Density를위한아이콘
 - res/drawable-nodpi/composite.xml
Density 와무관한리소스

* 밀도(Density)
 스크린해상도를기반으로물리적인넓이와높이안에얼마나많은픽셀이들어있는가를나타낸다. Lower density의스크린에서는같은넓이와높이안에더적은수의픽셀이있고, higher density의스크린에서는같은넓이와높이안에더많은수의픽셀이있다. 안드로이드는밀도를high, medium, low 세가지분류로나눈다. 플랫폼에서는실제스크린밀도에맞게리소스들의사이즈를조정한다.
Density-independent pixel (dip)
밀도와상관없이레이아웃의위치를표현할때사용하는가상의pixel 단위. Density-independent pixel 은기본밀도인160dip에서의물리적인 pixel과같다.
픽셀변환공식 pixels = dips * (density / 160)

아...저 토나오는 광경...같은게 하나도 없는 물건들...


갤럭시 노트
해상도  :  1280 * 800
Density  :  xhdpi
크기  :  5.3인치(large screen)
OS  :  Android 2.3 갤럭시 S2
해상도  :  800 * 480
Density  :  hdpi
크기  :  4.3인치(normal screen)
OS  :  Android 2.3  갤럭시 탭 10.1
해상도  :  1280 * 800
Density  :  mdpi
크기  :  10.1인치(xlarge screen)
OS  :  Android 3.0

참조 : http://sptraulyo.tistory.com/447

 

 

 

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

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

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

 

 

 

출처: http://www.androidpub.com/1895935

기기별로 해상도가 다양해지면서 각 기기의 해상도 정보 찾는게 쉽지 않네요. 안드로이드 개발자 사이트의 문서와 실제 소스나 기기간에도 틀린 부분이 있어 각종 안드로이드 기기의 해상도 관련 값 정리를 해보려고 합니다. 일부 기기들은 값이 확실치 않으니 잘못된 것이 있다면 댓글 남겨주시기 바랍니다. 정리된 범주에 들어있지 않은 것들은 댓글로 남겨주시면 감사하겠습니다.

 

=============== 스마트폰 =================

[HVGA 스마트폰]

- RESOLUTION : 320px(320dp), 480px(480dp)

- DENSITY DPI  : mdpi, 160 dpi

- SCREEN SIZE : normal

 

예 : G1, 옵티머스원

 

[WVGA 스마트폰] 

- RESOLUTION : 480px(320dp), 800px(533dp) or 854px(569dp)

- DENSITY DPI  : hdpi, 240 dpi

- SCREEN SIZE : normal

 

예 : WVGA800 : 넥서스원, 갤럭시S, 갤럭시S2 WVGA854 : 모토로라 드로이드, XPERIA X10

 

[qHD 스마트폰]

- RESOLUTION : 540px(360dp), 960px(640dp) 

- DENSITY DPI : hdpi, 240dpi

- SCREEN SIZE : normal

 

예 : Atrix, Evo 4G

 

[WXGA720 스마트폰]

- RESOLUTION : 720px(360dp), 1280(640dp)

- DENSITY DPI : xhdpi, 320dpi

- SCREEN SIZE : normal

 

예 : 갤럭시 넥서스

 

=============== 태블릿 =================

[7인치 태블릿]

- RESOLUTION : 600px(600dp), 1024px(1024dp)
- DENSITY DPI  : mdpi, 160 dpi

- SCREEN SIZE : large

 

예 : 킨들 파이이, 누크 태블릿

 

[10인치 태블릿]

- RESOLUTION : 1280px(1280dp), 800px(800dp) or 720px(720dp)
- DENSITY DPI  : mdpi, 160 dpi

- SCREEN SIZE : xlarge

 

예 : 갤럭시탭 10.1, 모토로라 XOOM

 

=============== 태블릿폰 =================

[갤럭시노트]

- RESOLUTION : 800px(400dp), 1280px(640dp)

- DENSITY DPI  : xhdpi, 320 dpi

- SCREEN SIZE : ??? (Gingerbread)

 

[7인치 갤럭시탭(2010)]

- RESOLUTION : 600px(400dp), 1024px(682dp)

- DENSITY DPI  : hdpi, 240 dpi

- SCREEN SIZE : large(Gingerbread)

 

크게 4가지로 나눠지네요. 

1. 320dp 스마트폰, 360dp 스마트폰 

2. 400dp 태블릿폰 (2011 현재 삼성에서만 출시, 갤탭(2010)은 7인치지만 dp 분류상 갤노트와 같이 분류.)

3. 600dp 7인치 태블릿

4. 720dp(800dp) 10인치 태블릿. 

 

* 참고 * 

http://developer.android.com/guide/practices/screens_support.html

http://android-developers.blogspot.com/2011/07/new-tools-for-managing-screen-sizes.html

 

* 주의사항 *

- 킨들파이어(2011) : 스크린 사이즈가 실제 디바이스에서는 Large인데 에뮬레이터에서는 XLarge로 잡힐 수 있습니다. 안드로이드 3.0 이하에서는 스크린 사이즈 잡는 부분이 문서와 같이 동작하지 않습니다. 

 

- 갤럭시탭(2010) : 400dp라는 흔치 않은 넓이를 가지고 있으며 문서와 다르게 Normal이 아니라 Large로 잡습니다. 문서대로라면 ICS로 업그레이드시에 달라질수 있을것으로 보이니 유의해야할것 같습니다.

실제기기에서 확인해보지 않은 값도 있습니다. 잘못된 부분 있으면 알려주세요. 확실치 않은 부분은 ? 붙여놓을테니 확인 부탁드립니다.

 

 

목록

엮인글 주소 : http://www.androidpub.com/index.php?document_srl=1895935&act=trackback&key=915

2011.12.17 02:41:43

라임

940*560도 요새 많이 나오고.. 1280*720도 앞으로 많이 나올 것 같아요

 

2011.12.17 10:40:00

건방진프로그래머

 

아 해상도 이상한거 너무 많이 나오니 개발하기 짜증남

 

2011.12.17 22:33:21

시루떡

 

안드로이드 개발시에 최대 단점이 디바이스 사양에 제한이 없어서 다 대응하기가 힘든점인거 같아요. 구글에서 뭔가 대안을 내놓았으면 좋겠어요.

 

2011.12.17 23:01:16

회색

이 글을 쓴 목적은 기본적으로 안드로이드를 기반으로한 폼팩터가 스크린을 기준으로 4개로 나뉜다는 것을 정리해놓은 겁니다. 폼팩터가 달라지면 UI를 다시만드는 것은 당연한거구요. 오히려 다른 폼팩터 처리를 위해 들이는 노력을 생각하면 적은 편이라고 봐야죠. 만약 같은 폼팩터인 스마트폰안에서 달라지는 해상도에 대한 문제의 경우 개발자가 그것을 처리하는 기술을 익혀야합니다. 그건 개발자 능력 문제죠.

 

2011.12.19 10:32:46

q1212

좋은 정보 감사합니다.

 

2011.12.19 15:24:41

아벸

스마트폰인 옵티머스 LTE의 경우 해상도가 1280*720이던데, 이건 어떤 범주에 들어가야할까요?

 

2012.01.11 13:57:38

 

회색

스마트폰 영역에 들어가겠죠 320dp에 xhdpi 이것도 올려야겠네요. 올해의 대세일테니.

 

2011.12.20 12:13:57

아즈라엘

480*800 , 1280 * 800 이 제일 무난한 해상도 같은데

프로그래밍 하기도 좋고..

 

2011.12.21 10:29:13

시루떡

 

같은 폼팩터 내의 디바이스 간에서도 분명히 하나의 UI 를 통한 구현은 무리인 경우를 많이 보았습니다. 결과적으로 대응하기 위한 모든 디바이스에서 실 기기 테스트를 통한 레이아웃 수정이 되지 않으면, 제대로 된 개발이 힘든 경우였습니다. TV 쪽은 잘 모르겠지만, 모바일 디바이스에 대해서는 제조사에게 단말 스펙상 해상도에 대한 제한이 이루어져서, 몇가지의 스펙에 대한 대응만 하면 모든 안드로이드 디바이스에서 구동이 되도록 하는 정책을 폈으면 하는 개인적인 바램입니다.

 

2011.12.21 17:39:28

깔루아밀크

좋은 정보 감사합니다!

 

2011.12.22 13:46:06

잇힝국대통령

해상도는 둘째치고, 이폰에서 잘되는데 저폰에서 안되는 경우가 너무 많네요 ㅠㅠ 

 

2011.12.29 16:52:29

아톰

위키에 제대로 된 자료가 있습니다.

http://en.wikipedia.org/wiki/List_of_displays_by_pixel_density

 

2011.12.30 13:38:30

Hsd

발주 할때 해상도가 많아진다고 해서 돈을 더 주는게 아니라는게 문제죠.

모든게 아이폰 기준으로 잡히니, UI 맞추는 시간과 노력이 두배 세배 들어가야 되는데 당연하다는듯이 넘어가니까 -_-

 

2012.01.11 17:58:52

jaylee

[갤럭시 넥서스] 

- RESOLUTION : 720px(360dp), 1280px(640dp)

- DENSITY: 2.0

 

[hTC evo 4g] 

- RESOLUTION : 540px(360dp), 960px(640dp)

- DENSITY: 1.5

 

 

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

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

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

 

 

 

 

반응형