2011-05-13 2 views
45

LDPI, MDPI, HPDI 및 XHDPI를 가까운 시일 내에 지원할 계획이라면 프로젝트에 XHDPI 드로어 블을 포함하고 장치에서 원하는 해상도로 확장 할 수 있습니까?Android 앱에서 XHDPI 드로어 블 만 사용 하시겠습니까?

Photoshop에서 드로어 블의 크기를 MDPI 및 HDPI로 조정 한 다음 Android에서 크기를 조정 한 XHDPI 드로어 블 결과와 비교 한 결과 아무런 차이가 보이지 않습니다. 이 바로 가기를 사용하는 것이 나쁜 디자인입니까? 각각의 드로어 블을 3 가지 해상도로 리사이즈 할 필요가 없다면 좋을 것입니다.

대상 SDK 사용 계획은 2.1 또는 2.2입니다.

BR 에밀

+2

비트 맵 크기 조정 최종 자산은 모양 레이어/레이어 스타일 등을 사용하여 Photoshop에서 크기로 그릴 때 자산보다 훨씬 나 빠질 것입니다. PSD가 잘 만들어진다면 소스 Photoshop 문서의 정확한 크기로 이미지를 만드는 것이 좋습니다. –

답변

25

나는 갈 수있는 좋은 방법 같아요. 내가 생각할 수있는 유일한 단점은 축소로 인해 소규모 장치 및 가능한 인공물에 대한 리소스 오버 헤드입니다. 실제로 올해 Google IO에서 Chris Pruett는 고해상도 자산 만 임베딩하고 OpenGL에서 스케일링을 처리하도록 권장했습니다.

+0

잘 알고 있습니다. 지금 xhdpi 드로어 블을 사용하여 개발 중입니다. 축소 이미지의 품질을 향상시킬 수있는 가능성이 있습니까? 좋은 보간법이 좋을 수도 있습니다. –

+0

밉 매핑을 사용하면 시스템이 서로 다른 크기의 텍스처를 생성하고 시청 거리에 따라 최적의 것을 선택할 수 있습니다. 이렇게하면 렌더링 속도가 빨라지고 아티팩트가 줄어 듭니다. 자세한 정보는 http://en.wikipedia.org/wiki/Mipmap을 참조하십시오. –

+11

Chris Pruett에 대한 인용문은 GPU가 다운 스케일로 전환하게하는 게임과 관련하여 다소 오해의 소지가 있습니다. – Warpzit

2

XHDPI는 안드로이드 SDK API 레벨 9 (진저 브레드)에서만 도입되었으므로 (http://developer.android.com/reference/android/util/DisplayMetrics.html#DENSITY_XHIGH 참조) 최소 SDK 레벨이 9보다 작 으면 최소한 HDPI 드로어 블을 제공해야합니다 Froyo 이하의 기기는 아무 것도 표시하지 않습니다.

업데이트 : 실제로 이미지를 xhdpi 표시됩니다 진저 브레드 이전 버전처럼 보인다 : https://groups.google.com/d/msg/android-developers/yjYO91OmoJ4/v3he0ZbKo-UJ

2

그것은 단지 xhdpi 자원을 확인합니다. 그러나 xhdpi는 API 레벨 9 (진저 브레드)로 소개되었습니다. 즉, API 레벨 < = 8을 목표로한다면 최소한 hdpi 리소스가 필요합니다.

15

Android 1.6부터 XHDPI (공식적으로 2.2까지 추가되지 않음)를 포함하여 다양한 밀도가 처리됩니다. 앱은 먼저 밀도와 일치하는 이미지를 검색하지만 XHDPI와 같은 더 큰 "버킷"을 조사한 다음 사용자를 위해 크기 조정을 수행 할 수 있습니다.

지원하려는 밀도에 맞는 특정 자산을 포함하는 것이 가장 좋습니다. 100x100 크기의 이미지는 40kb 크기입니다. 200x200의 이미지는 160k (압축되지 않은 이미지)입니다. 따라서 MDPI 장치에 사용되는 모든 XHDPI 자산에는 필요한 데이터 양의 4 배가 있습니다.이 데이터는 앱이 시작되고 리소스가 준비 될 때 처리되어야합니다. 메모리 사용을 줄이면 효율성이 향상되고 OutOfMemoryException 가능성이 줄어 듭니다.

또한 특정 유형의 이미지는 자동으로 크기가 조정될 때 좋지 않습니다. 특히 미세 선이나 미세 패턴이있는 이미지의 경우 세부 묘사가 생깁니다. 손으로 이미지를 축소하면 필요에 가장 부합하는 알고리즘 (선형, 바이 큐빅, 란초 등)을 선택할 수 있습니다.

당신은 그것이 자신의 크기를 조정하는 것은, 당신이 배치 프로세스를 통합 또는 나인 패치 리사이 저 같은 도구를 사용하여 수행하는 데 걸리는 시간에 대해 걱정하는 경우 : http://code.google.com/p/9patch-resizer/ 나는 간단한 응용 프로그램에서 테스트

+0

다음 진술은 사실이 아닙니다. "Android 2.1은 XHDPI 리소스에 대해 알지 못했기 때문에 코드가 2.1 및 이전 버전에서 XHDPI 전용 애셋을 사용하려고하면 충돌이 발생합니다." 나는 xhdpi가 아닌 그래픽이 없기 때문에 어떤 충돌도 경험하지 못했습니다. –

+0

1.6 이상은 XHDPI 자산을 처리합니다. 나는 대답을 업데이트 할 것이다. –

+0

저는 항상 더 높은 SDK 레벨에 맞춰 앱을 빌드하고 그래픽을 선택하는 로직이 제공된 로직에서 발생하기 때문에 작동한다고 가정했습니다. 이에 관한 공식 문서가 있습니까? –

4

(안드로이드 개발을 2.1) xhdpi 이미지만을 사용하여 작고 중간 및 고해상도에서 잘 작동합니다 ... 심지어 안드로이드 2.1 (작은 해상도)에서 테스트하고 문제없이 imagen을 엽니 다.

아마도 메모리가있는 것이 사실이므로 필요한 사람이 이것을 테스트합니다.

3

저는 개인적으로 xhdpi 폴더를 사용하는 것이 많은 응용 프로그램에서 훌륭하게 작동하며이 접근 방식을지지한다고 생각합니다. 메모리 오버 헤드는 사실이지만 오늘날의 장치에서는 무시할 만하다고 생각할 것입니다.또한 나는 이것 때문에 어떤 속도 저하도 발견하지 못했기 때문에 축소 이후에 관련된 캐싱이 있다고 생각한다. 하나의 폴더 만 포함하면 최종 사용자가 상당히 높이 평가할 APK 크기를 크게 줄일 수 있습니다. 일부 이미지는 스케일링 아티팩트 (미세한 패턴 및 물건)를 얻지 만 개인적으로 내 앱에서 중요한 것은 없습니다. 또한 둥근 모서리의 아티팩트를 줄이기 위해 버튼과 물건에 대해 반드시 9 패치를 사용하십시오.이 방법을 사용하여 이미지 크기를 약간 줄일 수도 있습니다. drawable-xhdpi는 지원하지 않는 버전에서 drawable로 간주되므로 이전 버전에서는 API 수준이 문제가되지 않습니다. xml에서 간단한 드로어 블을 정의 할 수있는 기회를 무시하지 마십시오. 예를 들어 셰이프로 그라데이션 배경을 만드는 것이 매우 쉽습니다. 따라서 공간을 절약하고 스케일링 유물을 위험에 빠뜨리지 않아도됩니다.

+3

다운 투표자들에게이 답변이 incorect라고 생각된다면 투표가 자유 롭지 만, 그렇게 생각하는 이유를 추가해주십시오. 이것은이 답변이 개인적인 견해에 기초하고 있기 때문에 내가 문제를 해결할 때마다 완벽하게 작동했습니다. 또한이 접근법을 사용하는 다른 개발자들이 있습니다. 그렇다고 생각하면 왜 이것이 나쁜 습관이 될 수 있는지 알고 싶습니다. – PSIXO

0

추가 메모리 사용에 관한이 문장은 잘못되었습니다.

XHDPI 크기의 드로어 블을 MDPI 폴더에 넣으면 메모리에 문제가 있습니다.

XHDPI 폴더에 드로어 블을 제공하면 안드로이드가 이미지의 일부를 건너 뛰면서 이미지를 다운 샘플링하므로 추가 메모리가 사용되지 않습니다.

skipping은보기 좋게 보이도록 지원하려는 모든 밀도에 드로어 블을 제공해야하는 이유입니다.

반면에 다운 샘플링 할 때 특정 이미지 만보기 좋게 (주로 작은 아이콘) 보이므로 이미지에 버릴 데이터가 충분하면 괜찮을 것입니다. 드로잉 가능 그리드를 사용한다면 그리드 선을 버리고 이미지가 좋지 않게 보이게 만들 수 있습니다.

결국 다른 장치로 실험 해보는 것이 좋습니다. 그런 다음 어느 드라 콜을 밀도에 대한 대체 리소스가 필요한지 알 수 있습니다.

+2

안드로이드는 실제로 다운 샘플링을 수행하기 전에 전체 이미지를 메모리에 읽지 않을 정도로 영리한가요? 그냥 픽셀을 건너 뛰면 가장 가까운 이웃 샘플링을 수행합니까? 표창장이 필요했습니다. – Karu

+0

나도이 이상한 그들이 픽셀을 건너 뛸 것이라고 생각, 나는 그들이 다른 알고리즘을 사용하지만, 잘못된 것 같아요, 일부 소스가 좋을 것 같아요. 비트 맵 데이터는 자바 힙이 아닌 네이티브 메모리로 관리되고, 로우 엔드 디바이스의 경우에도 큰 이미지 일지라도 메모리가 충분하기 때문에 메모리에 대해 걱정할 필요가 없을 것입니다. – PSIXO

관련 문제