여러 화면을 지원하는 애플리케이션 스켈레톤


92

Android에는 기능, 해상도, 화면 크기가 다른 다양한 기기가 함께 제공되므로 여러 (작고 큰) 화면을 지원하는 Application을 개발하면서 크기와 레이아웃의 장애물이 있습니다.

이로 인해 화면 크기, 해상도 및 DPI 의 다양한 조합이 발생하고 Android 장치 용으로 설계 및 개발할 때 상당한 어려움이 발생합니다. 일부 다른 제조업체 (비 Android)는 해상도와 DPI가 다르지만 동일한 화면 크기를 공유하고 해상도는 동일한 종횡비를 따릅니다. 따라서 Android가 아닌 장치에 맞게 이미지를 만들 수 있습니다.

내 질문은 요구 사항을 충족하기 위해 따라야하는 적절한 흐름이나 아키텍처가 있다는 것입니다.

여기에 이미지 설명 입력

크기와 해상도가 다른 태블릿이 있다는 것을 기억하십시오.

나는 것을 알고 있어요 안드로이드 개발자는 이 정보를 포함하지만 내보기 구현에서입니다.

내 지식에서 내가 이해 한 것은 Android 그래픽을 디자인하기 위해 프로그래머조차도 디자인 개념을 알아야한다는 것입니다.


13
이 질문이 건설적이지 않다고 확신하십니까?
Mohammed Azharuddin Shaikh

6
매우 건설적이라고 생각합니다. 반대표의 이유를 알고 싶습니다.
Lazy Ninja 2012 년

11
@MKJParekh take MicroMax Funbook gsmarena.com/micromax_funbook_p300-4701.php 7", 480X800, Ldpi (133 dpi) 어떤 카테고리 (drawble-large 또는 Ldpi 또는 Android v3.0 sw-480의 경우)에 속할지 알려주시겠습니까?
Mohammed Azharuddin Shaikh

1
@LazyNinja 반대표의 이유는 미치광이와 미친 사람들입니다. 건설적인 질문 만 할 수 있다고 생각하는 사람 : p
AZ_ aug

1
@AZ_ :) 우리는 res 폴더 drawable drawable-hdpi drawable-hdpi-v11 drawable-hdpi-v9 drawable-large drawable-large-hdpi drawable-ldpi drawable-mdpi drawable-mdpi-v11 drawable-small drawable- 에서이 res 구조를 사용했습니다. xhdpi drawable-xhdpi-v11 drawable-xxhdpi drawable-xxhdpi-v11 레이아웃 레이아웃-작은 레이아웃 -sw530dp 레이아웃 -sw720dp 레이아웃 -xlarge 값 값 -sw530dp 값 -sw720dp 값 -v14 값 -xlarge 및 값 폴더의 xml에서 잘 정의 된 치수 사용 . FYKI 우리의 응용 프로그램은 5k 유형 이상의 장치를 지원합니다.
MKJParekh

답변:


147

마지막으로 여러 화면의 레이아웃과 아이콘을 처리하는 구조를 만들었습니다.

Android는 다음 두 가지 매개 변수를 기반으로 기기 디스플레이를 카테고리로 일반화합니다.

  • 화면 크기, 디스플레이의 물리적 크기 (대각선으로 측정)
  • 화면 밀도, 디스플레이의 물리적 픽셀 밀도 (인치당 픽셀 또는 ppi)`

화면 크기 및 밀도를 빠르게 확인하려면 Android 용 " What 's my Size "앱을 설치하세요 .

화면 크기

Android는 네 가지 일반화 된 화면 크기를 정의합니다.


 Qualifier           Size

 small               ~3 inches (approx) 
 normal              ~4 inches (approx) 
 large               Exceeds 4 inches    
 xlarge              Exceeds 7 inches  
  • 대부분의 휴대폰은 소형 또는 일반 (대각선으로 약 3 ~ 4 인치)으로 분류됩니다. 하지만 지금은 Galaxy S4, HTC One, Xperia Z와 같이 화면이 큰 휴대폰이 많이 있습니다.
  • 삼성 갤럭시 탭과 같은 소형 태블릿은 대형 (4 인치 이상)으로 분류됩니다.
  • 초대형은 대형 장치 (예 : 대형 태블릿)에 적용됩니다.

Android는 네 가지 일반화 된 화면 밀도를 정의합니다.


 Qualifier         Description         Nominal value

 ldpi              low density          120 ppi
 mdpi              medium density       160 ppi
 hdpi              high density         240 ppi
 xhdpi             extra high density   320 ppi

일반적으로 :

  • 화면 크기는 앱 레이아웃에 가장 큰 영향을 미칩니다.
  • 화면 밀도는 이미지 및 그래픽 리소스에 가장 큰 영향을 미칩니다.

여기 에 장치 화면의 백분율 차이 가 나열 됩니다 .

  • Ldpi- 75 %
  • Mdpi- 100 % (Android 개발자 사이트 기준)
  • Hdpi- 150 %
  • XHdpi- 200 %

여기에 이미지 설명 입력

하지만 지금은 대부분의 장치가 480X800 과 함께 제공 된다는 것을 알고 있으므로 이것을 기반 장치로 간주하므로 새로운 계산은 다음과 같습니다.

  • Ldpi- 50 %
  • Mdpi- 66.67 %
  • HDPI- 100 %
  • XHdpi- 133.33 %

즉, 첫 번째 아이콘과 디자인은 480X800 용으로 만 생성 되고 나머지 아이콘 (예 : Ldpi, Mdpi, Xhdpi) 용으로 생성됩니다.

모든 레이아웃에 공통된 이미지가 있으며 색상과 모양이 균일해야합니다 (복잡한 모양, 곡선 없음). 따라서 이러한 종류의 이미지는 9patch"drawable (no-suffix)"폴더에 넣을 이미지를 생성 하고 있습니다. 9Patch 이미지를 만드는 방법 중 하나를 사용할 수 있습니다 DrawNinePatch 또는 BetterNinePatch을

이제 Android의 표준에 따라 이미지의 이름을 바꾸고 응용 프로그램을 완성한 hdpi다음 drawable-hdpi폴더를 가져 와서 Adode Photoshop을 엽니 (권장) 여러 크기의 액션 을 만듭니다 (백분율에 따라 크기를 변경). 한 번 모든 크기에 대해 액션을 만든 다음 수행합니다. 일괄 자동화 하고 소스 (drawable-hdpi) 및 대상 (drawable-ldpi, drawable-mdpi, drawable-xdpi)을 제공합니다.

액션으로 이미지의 크기를 자동으로 조정하고 플러스 포인트를 하나 더 추가하기 때문에 Photoshop을 사용해야한다고 주장하는 이유는 파일 이름을 바꿀 필요가 없기 때문입니다 (원래 파일과 동일한 이름이 지정됨).

모든 이미지 생성이 완료되면 프로젝트를 새로 고치고 테스트하십시오.

때로는 화면 (xhdpi, hdpi, mdpi)을 지원하는 레이아웃이 작은 화면 (ldpi)에서 잘릴 수 있으므로이를 처리하기 위해 별도의 Layout 폴더 (layout-small)를 생성하고 ScrollView(대부분) 추가하면 됩니다. 그게 다야.

태블릿 태블릿은 두 가지 크기로 분류됩니다.

  1. 7 "(1024X (600-48 (탐색 막대))) = 1024X552 (드로어 블-대형)
  2. 10 "(1280X (800-48 (탐색 막대))) = 1280X752 (드로어 블 -xlarge)

여기에서는 두 화면 모두에 대한 이미지를 생성하고 그에 따라 배치해야합니다.

따라서 전체적으로 다중 화면을 지원하기 위해 응용 프로그램 에이 폴더가 있습니다.

drawable
drawable-ldpi
drawable-mdpi
drawable-hdpi
drawable-xhdpi
drawable-large
drawable-xlarge

더 많은 한정자 조합이 될 것입니다. Screen size and Screen density

drawable-large-ldpi
drawable-large-mdpi
drawable-large-hdpi
drawable-large-xhdpi

더 많은 한정자 Screen density and Version

drawable-ldpi-v11
drawable-mdpi-v11
drawable-hdpi-v11
drawable-xhdpi-v11

더 많은 한정자 Screen size and Version

drawable-large-v11
drawable-xlarge-v11

더 많은 한정자 Smallest width concept(SW)

 drawable-sw???dp

더 나아가 Android V3.0 Honeycomb에서는 SW(smallest width)기기가 화면 너비로 분류되는 새로운 개념을 도입했습니다 . 따라서 폴더라는 이름 drawable-sw360dp을 만들면 720dp (너비 또는 높이)의 기기가이 폴더의 리소스를 사용합니다.

예를 들어 drawable-sw? dp 접미사에 Samsung Galaxy S3 dp 를 찾으려면 DP 계산을 참조 하여 레이아웃 또는 드로어 블을 S3로 지원하려면 계산에 다음과 같이 표시됩니다.

px = 장치 너비 = 720dpi
= 장치 밀도 = 320

주어진 공식

    px = dp * (dpi / 160)

우리는 px의 값을 가지고 있기 때문에 공식을 교환

    dp = px / (dpi / 160)

이제 가치를 부여하고

     dp= 720 / (320/160);
     dp=360. 

그래서 drawable-sw360dp일을 할 것입니다

GsmArena Sameway 에서 장치 구성 가져 오기 장치의 Android API 버전 (예 : drawable-hdpi-v11`)에 따라 폴더를 만들 수도 있으므로 API11이 있고 Hdpi 인 장치는이 리소스를 사용합니다.

추가 팁 :

  • 상대 레이아웃, dp, sp 및 mm 사용

    dp 단위 -160ppi 화면, 즉 중간 밀도에서 1 개의 물리적 픽셀로 정규화 된 장치 독립 픽셀. 런타임에 확장됩니다. 화면 요소 치수에 사용

    sp 단위-dp 단위에 따라 부동 소수점 값으로 지정되지만 사용자의 글꼴 크기 기본 설정에 맞게 추가로 크기가 조정 된 크기 조정 된 픽셀입니다. 런타임에 확장됩니다. 글꼴 크기에 사용

    레이아웃에는 항상 RelativeLayout을 사용해야합니다. AbsoluteLayout은 더 이상 사용되지 않으며 사용해서는 안됩니다.

  • 적절한 이미지 형식 사용-PNG와 JPEG

    Android "prefers" PNG for bitmap image files, "accepts" JPEG, and "discourages" GIF.

    그러나 PNG와 JPEG는 동등하지 않습니다. 그들은 서로 다른 품질 장단점을 가지고 있으며 PNG가 항상 최선은 아닙니다.

    JPEG 는 PNG보다 최대 50 % 파일 크기 축소를 제공 할 수 있습니다. 이는 앱이 이미지 집약적 인 경우에 중요합니다.

    동일한 파일 크기에 대해 더 높은 품질의 "손실이있는"JPEG가 압축 된 "무손실"PNG보다 더 좋아 보일 수 있습니다.

  • 디버깅을 위해 이미지 및 그래픽에 레이블 추가

  • 지원 화면 요소 사용

  • 실제 장치 값으로 에뮬레이터 구성

    일반적으로 데스크탑 시스템은 72ppi (Mac) 또는 96ppi (Windows, Linux)로 표시됩니다. 모바일과 비교할 때 데스크톱 디스플레이는 항상 밀도가 낮습니다.

    항상 실제 기기 값을 모방하도록 Android 에뮬레이터를 구성하고 항상 기기 밀도를 에뮬레이션하도록 확장하도록 설정하세요.

    Eclipse에서는 실제 장치에 대한 값으로 구성된 여러 에뮬레이터를 쉽게 만들 수 있습니다 (Eclipse 메뉴 표시 줄에서 Window> AVD Manager> New 선택 ).

    에뮬레이터가 에뮬레이션하는 실제 장치의 이름을 지정합니다. 해상도 지정, 기본 제공 일반 크기 사용 안 함 실제 장치와 일치하도록 장치 밀도 설정 (하드웨어 창에서 Abstracted LCD Property를 실제 밀도, 항상 정수 값으로 설정)

    장치를 시작할 때 항상 디스플레이를 실제 크기로 조정을 선택하고 실제 화면 크기를 인치로 입력하십시오.

    기기 밀도를 설정하지 않으면 에뮬레이터는 기본적으로 낮은 밀도로 설정되고 항상 ldpi 관련 리소스를로드합니다. 해상도 (픽셀 치수)는 정확하지만 밀도 종속 이미지 리소스는 의도 한대로 표시되지 않습니다.

    물론, 저밀도 데스크탑 디스플레이에서 더 높은 밀도의 이미지 품질을 재현하는 것은 없습니다.

다음은 2012 년 10 월 1 일까지 7 일 동안 수집 된 데이터입니다. Android 플랫폼 버전에 대한 최신 통계를 보려면 여기로 이동하십시오.

화면 크기 기준

여기에 이미지 설명 입력

화면 밀도 기준

여기에 이미지 설명 입력


2
samsung galaxy tab 7 "의 경우 drawable-large-hdpi 아래에 이미지를 보관해야합니다. 그렇지 않으면 이미지가 늘어나거나
줄어들 것

@rajpara에는 많은 조합과 순열이 있으며 나중에 이러한 모든 경우를 포함합니다.
Mohammed Azharuddin Shaikh

1
@AlexBonel을 참조하십시오. 저도 동의합니다.하지만 저의 주요 모토는 다중 화면 지원과 관련하여 작업을 수행 할 수있는 방법을 인식하는 것입니다. 위의 내용은 초기 문제를 명확히하기위한 것이기 때문에이 흐름 / 개념을 수정 / 조작 할 수 있습니다. 또한 응용 프로그램 디자인을 기반으로 수정을합니다. 귀하의 게시물은 귀하가 개념을 이해했다는 느낌을줍니다. 내 요점을 알기를 바랍니다.
Mohammed Azharuddin Shaikh

1
좋은 대답입니다. 이 예외가 발생하는 이유를 여러 날 검색 한 후,이 게시물을 훌륭한 예와 설명으로 베스트 답변으로 얻었습니다. 예를 들어 Halo Value 7 인치 태블릿을 고려하십시오. PPI = 133. 해상도 = 480 * 800. Size = 7 '인치. mdpi를 기준으로 고려하면 values-sw480에 정의 된 차원을 가져야하지만 values-sw600에서 차원을 가져옵니다. 왜 이런 일이 일어나는지 알지 못합니다. 귀하의 게시물에 정말 감사드립니다. 시간 낭비를 줄이고 혼란을 없애십시오. 나는 이것이 안드로이드의 공식 사이트에 있어야한다고 생각한다. 노력에 감사드립니다.
Smeet

1
나는 이것이 내가 본 최고의 대답이라고 생각합니다. 나는 오랫동안 그런 대답을 찾고 있습니다. 그리고 마침내 나는 그것을 얻었다. 이 답변을 더 이해할 수 있도록 기여해 주신 모든 분들께 감사드립니다.
Hiren Dixit

1

디자이너는 다음의 기본 디자인을 만들어야합니다.

base size of mdpi devices * density conversion factor of highest supported density bucket
기본 화면 크기는 320 X 480 픽셀이고 밀도 버킷은 다음과 같습니다.

  • ldpi : 0.75
  • mdpi : 1.0 (기본 밀도)
  • hdpi : 1.5
  • xhdpi : 2.0
  • xxhdpi : 3.0
  • xxxhdpi : 4.0

Android 기기에서 사용 가능한 추가 공간을 처리하려면 양방향 (수평 및 수직)으로 신축성있는 구성 요소를 사용해야합니다. 자세한 정보는 여기에서 확인할 수 있습니다.

http://vinsol.com/blog/2014/11/20/tips-for-designers-from-a-developer/

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.