Android 이미지 및 자산 크기 정보


86

내 앱의 이미지 자산에 대한 의심을 명확히해야합니다.

xml 파일에서 [이미지보기] 높이가 50 dip 높이라고 지정하면

리소스 폴더에서 어떤 유형의 화면을 선택해야합니까?

drawable, hdpi, ldpi, mdpi, xhdpi,

높이가 50 픽셀 인 이미지를 가지려면

기본 이미지에 비해 더 크고 작은 이미지의 비율은 얼마입니까?

iOS에서 @ 2x는 말 그대로 이미지 크기의 2 배이고 프로그래밍 방식으로 정상 크기라고 말합니다.

감사!


1
귀하의 질문은 Android 설명서에 설명되어 있습니다. developer.android.com/guide/practices/screens_support.html
Marcin Orlowski

답변:


373

mdpi즉, mdpi디스플레이의 1px 는 1 dip과 같습니다. 자산 확장 비율은 다음과 같습니다.

ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi
0.75 | 1    | 1.33  | 1.5  | 2     | 3      | 4

tvdpiGoogle TV 또는 원래 Nexus 7을 위해 특별히 개발하지 않는 한 걱정할 필요는 없지만 Google에서도 단순히 hdpi자산을 사용하는 것이 좋습니다 .

이것이 의미하는 바는 48dip 이미지를 수행 중이고 최대 xxhdpi resolution.

ldpi    | mdpi    | tvdpi    | hdpi    | xhdpi     | xxhdpi    | xxxhdpi
36 x 36 | 48 x 48 | 64 x 64  | 72 x 72 | 96 x 96   | 144 x 144 | 192 x 192

그리고이 당신이 밀도 특정 폴더에 (예를 들어, 이러한 배치 한, 어떠한 장치에 거의 같은 크기로 표시됩니다 drawable-xhdpi, drawable-hdpi등)

참고로 이들의 픽셀 밀도는 다음과 같습니다.

ldpi  | mdpi  | tvdpi  | hdpi  | xhdpi  | xxhdpi  | xxxhdpi
120   | 160   | 213    | 240   | 320    | 480     | 640

32
이것은 내가 어디에서나 온라인에서 본이 주제에 대한 가장 쉬운 설명입니다. 나는 말 그대로 내 디자이너 워크 스테이션 롤에 그것을 표시 책
James andresakis

10
하하! : P XXHDPI에 대한 정보도 추가했습니다.
Kevin Coppock 2013

48dip에서 시작해야한다고 어떻게 결정합니까? 태블릿 (mdpi) 만 가지고 있다고 가정하고 임의의 크기로 시작하여 "충분히 크게"보일 때까지 반복합니까?
phtrivier 2015 년

@phtrivier 예제로 사용한 크기입니다. 이 경우 런처 아이콘 크기입니다. 다른 자산에 필요한 크기는 사용 사례에 따라 다릅니다.
Kevin Coppock 2015 년

1
나는 또한 이것을 즉시 계산하는 도구를 만들었다 : pixit-tool.web.app/#
wdavies973

22

kcoppock 의 답변을 기반 으로 모든 이미지의 크기를 자동으로 올바른 크기로 조정하고 각 Android drawable- * 폴더에 복사하는 다음 셸 스크립트를 만들었습니다!

셸 스크립트를 만들고 다음 코드를 붙여 넣습니다.

createAndroidImages.sh

#!/bin/bash

read -p "Please enter the subfolder of the original images? " folder
read -p "How many DP (width) should the image have? " dp

for i in $(find $folder/. -type f -name "*[A-Z]*"); do mv "$i" "$(echo $i | tr A-Z a-z)"; done

mkdir drawable-ldpi
mkdir drawable-mdpi
mkdir drawable-tvdpi
mkdir drawable-hdpi
mkdir drawable-xhdpi
mkdir drawable-xxhdpi
mkdir drawable-xxxhdpi

cp $folder/* drawable-ldpi/
cp $folder/* drawable-mdpi/
cp $folder/* drawable-tvdpi/
cp $folder/* drawable-hdpi/
cp $folder/* drawable-xhdpi/
cp $folder/* drawable-xxhdpi/
cp $folder/* drawable-xxxhdpi/

sips -Z $(echo $dp*3/4 | bc) drawable-ldpi/*
sips -Z $(echo $dp | bc) drawable-mdpi/*
sips -Z $(echo $dp*4/3 | bc) drawable-tvdpi/*
sips -Z $(echo $dp*3/2 | bc) drawable-hdpi/*
sips -Z $(echo $dp*2 | bc) drawable-xhdpi/*
sips -Z $(echo $dp*3 | bc) drawable-xxhdpi/*
sips -Z $(echo $dp*4 | bc) drawable-xxxhdpi/*

스크립트를 폴더에 넣고 원본 이미지를 하위 폴더에 넣습니다. 예 :

/
.. createAndroidImages.sh
.. originalImages/
....a123.png
....b456.png

터미널에서 쉘 스크립트를 실행하십시오. sh createAndroidImages.sh

생성 된 이미지를 Android 스튜디오 프로젝트에 직접 복사하려면 :

cp -R drawable-* ~/AndroidStudioProjects/ESCRating/app/src/main/res/

끝났습니다! 이것이 누군가를 돕기를 바랍니다!

추신 : 최적의 결과를 얻으려면 원본 이미지가 원하는 dpi 너비 (예 : 4 (factor xxxhdpi) * 30dpi => 120px)보다 픽셀 너비의 4 배 이상이어야합니다.


4

kcoppock은 Andorid 화면 밀도를 설명하는 훌륭한 작업을 수행했습니다. 원래 질문과 관련하여 한 가지 더 추가하고 싶습니다.

Android 태블릿 런처 아이콘은 하나의 밀도 버킷을 사용합니다.

Google의 개발자 Nick Butcher의 Google+ 게시물에 따르면

Nexus 10의 멋진 화면은 XHDPI 밀도 버킷에 속합니다. 태블릿에서 Launcher는 하나의 밀도 버킷 위로 [0] 아이콘을 사용하여 약간 더 크게 렌더링합니다. 런처 아이콘 (아마도 앱에서 가장 중요한 자산)을 선명하게하려면 drawable-xxhdpi 또는 drawable-480dpi 폴더에 144 * 144px 아이콘을 추가해야합니다.

여기에서 소스 찾기


1

다음은 Android 용 이미지의 확장 및 축소에 대한 계산입니다.

ldpi (120dpi, 저밀도 화면)-36px x 36px (0.19) (1)

mdpi (160dpi, 중간 밀도 화면)-48px x 48px (0.25) (1.33)

hdpi (240dpi, 고밀도 화면)-72px x 72px (0.38) (2)

xhdpi (320dpi, 초 고밀도 화면)-96px x 96px (0.5) (2.67)

xxhdpi (480dpi, 초초 고밀도 화면)-144px x 144px (0.75) (4)

xxxhdpi (640dpi, 초 초초 고밀도 화면)-192px x 192px (1.0) (5.33)

내 짧은 기사 는 이미지가 여러 개인 경우 imagemagick을 사용하여 이미지 리소스를 만드는 데 도움이됩니다.

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