web-dev-qa-db-ja.com

Androidの画像とアセットのサイズについて

私のアプリの画像アセットに関する疑念を明確にする必要があります。

何か[イメージビュー]の高さが50ディップの高さであることをxmlファイルで指定した場合

リソースフォルダーからどのタイプの画面を選択する必要がありますか?

drawable, hdpi, ldpi, mdpi, xhdpi,

高さ50ピクセルの画像を作成するには、

また、基本画像と比較して大きく、小さいサイズの画像の割合は何ですか、

iOSのように、@ 2xは文字通り画像の2倍のサイズであり、プログラム的に通常のサイズと言いますが、

ありがとう!

86
manuelBetancurt

mdpiは基準密度です。つまり、mdpiディスプレイ上の1ピクセルは1ディップに等しくなります。資産スケーリングの比率は次のとおりです。

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

Google TVまたは元のNexus 7専用に開発している場合を除き、tvdpiを心配する必要はありませんが、hdpiアセットを使用することをお勧めします。

これが意味することは、48dipイメージを作成していて、xxhdpi resolutionまでサポートする場合、144pxイメージ(xxxhdpiのネイティブアセットが必要な場合は192px)から始めて、密度に応じて次のイメージを作成する必要があります。

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-xhdpidrawable-hdpiなど)に配置されていれば、どのデバイスでもほぼ同じサイズで表示されるはずです。

参考までに、これらのピクセル密度は次のとおりです。

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

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 St​​udioプロジェクトにコピーするには:

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

できました!これが誰かを助けることを願っています!

追伸最適な結果を得るには、元の画像の幅をピクセル単位で少なくとも4倍にして、希望のdpi幅(たとえば、4(factor xxxhdpi)* 30dpi => 120px)の4倍にしてください。

22
Ben Marten

kcoppockは、Andoridの画面密度を説明する素晴らしい仕事をしました。元の質問に関してもう1点だけ付け加えたいと思います。

Androidタブレットランチャーアイコンは1つの密度バケットを使用します。

Googleの開発者Nick ButcherのGoogle+の投稿によると

Nexus 10のゴージャスな画面は、XHDPI密度バケットに分類されます。タブレットでは、Launcherは1つの密度バケット[0]からのアイコンを使用して、アイコンをわずかに大きくします。ランチャーアイコン(おそらくアプリの最も重要なアセット)を鮮明にするには、drawable-xxhdpiまたはdrawable-480dpiフォルダーに144 * 144pxアイコンを追加する必要があります。

ソースを検索 こちら

4
geng

Android向けの画像のアップスケーリングとダウンスケーリングの計算は次のとおりです。

ldpi(120 dpi、低密度画面)-36px x 36px(0.19)(1)

mdpi(160 dpi、中密度画面)-48px x 48px(0.25)(1.33)

hdpi(240 dpi、高密度スクリーン)-72px x 72px(0.38)(2)

xhdpi(320 dpi、超高密度画面)-96px x 96px(0.5)(2.67)

xxhdpi(480 dpi、超高密度画面)-144px x 144px(0.75)(4)

xxxhdpi(640 dpi、超超超高密度画面)-192px x 192px(1.0)(5.33)

私の短い記事 は、複数の画像がある場合にimagemagickを使用して画像リソースを作成するのに役立ちます。

1