web-dev-qa-db-ja.com

mdpi、hdpi、xhdpiフォルダーの仕組み

上記のAndroidデベロッパーガイドリンクから抽出:

320dp:典型的な電話画面(240x320 ldpi、320x480 mdpi、480x800 hdpiなど)。
480dp:Streak(480x800 mdpi)のようなトゥイナータブレット。
600dp:7インチタブレット(600x1024 mdpi)。
720dp:10インチタブレット(720x1280 mdpi、800x1280 mdpiなど)

だから私はこれらの次元でのみデザイナーから解像度320ピクセル/インチのグラフィックス(画像)を得ました

480x800 hdpi

720x1280 mdpi

800x1280 mdpi

どのサイズの画像をmdpiフォルダー、hdpiフォルダー、xhdpiフォルダーに配置すべきか混乱しています。ほとんどのAndroid電話とタブレットで動作する1つのアプリケーションを作成したいですか?

28
Muhammad Irfan

さまざまなピクセル密度で使用するさまざまなグラフィックオブジェクトを作成できます。 Androidはmdpi(160ピクセル/インチ)を基本密度として扱います。したがって、mdpiデバイスの場合、1 dp = 1ピクセルです。高密度では、1インチあたりのピクセル数が増加します(hdpiの場合は240、320 xhdpiの場合。Androidデバイスのピクセル密度に関係なく、グラフィックイメージを画面上の同じ物理的サイズに占有させようとします。したがって、見つかったものがmdpiリソースであり、デバイスがhdpiの場合、グラフィックを240/160 = 150%で拡大縮小し、xhdpiのグラフィックサイズを2倍にします。

この自動スケーリング(グラフィックの見栄えが悪くなる可能性があります)が必要ない場合は、独自のバージョンのグラフィックリソースを提供して、より高い密度で使用できます。これらのグラフィックスは、Androidがmdpiリソースをスケーリングするのと同じサイズでなければなりません。

画像ファイルに保存されたピクセル/インチは、これとは関係がないことに注意してください。それはすべて、プロジェクトのリソースディレクトリのグラフィックファイルをどこに配置するかに基づいています。 res/drawableに配置されたグラフィックスは、res/drawable-mdpiに配置されたグラフィックスと同様に、mdpiディスプレイに適切なサイズであると想定されます。 res/drawable-hdpiで見つかった画像ファイルは、hdpiディスプレイなどに適切なサイズであると想定されます。特定のデバイスでプログラムを実行すると、Androidは最初に一致するグラフィックを探しますそのデバイスのディスプレイ密度見つからないが、代わりに異なる密度のものを見つけた場合、それを使用し、上記のルールに基づいて画像を自動的にスケーリングします。

36
Ted Hopp

代替を提供するリソースをリクエストすると、Androidは、現在のデバイス構成に応じて、実行時に使用する代替リソースを選択します。どのようにAndroid代替リソースを選択します。次の描画可能ディレクトリには、それぞれ同じ画像の異なるバージョンが含まれていると仮定します。

drawable/
drawable-en/
drawable-fr-rCA/
drawable-en-port/
drawable-en-notouch-12key/
drawable-port-ldpi/
drawable-port-notouch-12key/

そして、以下がデバイス構成であると仮定します。

Locale = en-GB 
Screen orientation = port 
Screen pixel density = hdpi 
Touchscreen type = notouch 
Primary text input method = 12key

デバイス構成を利用可能な代替リソースと比較することにより、Androidは、drawable-en-port。からドロアブルを選択します。

システムは、次のロジックで使用するリソースを決定します。

enter image description here

参照: 方法Android最適なリソースを見つける

その他の参考資料: 密度の独立性代替リソースの提供 および ベストプラクティス

そして、あなたは完全なページを読むべきだと言います複数画面のサポート 、それ以上に優れたドキュメントはないと思います...

10
Pankaj Kumar

すべての画面サイズの断片化と混同していますが、基本は次のとおりです。1.画像を操作するには、レイアウトの下にさまざまなフォルダーを作成する必要があります。 3.非特定のフォルダーに付随する基本的な/ layoutおよび/ drawableフォルダーが必要です。4. xhdpiで作業してから画像を縮小します!

特定の画面フォルダーの例:/ layout-hdpi/layout-xhdpi/drawable-hdpi/drawable-xhdpi

私が知っていることから:480 x 800はhdpi(古い電話、たとえばS2、HTC Desireなど)720 x 1280はxhdpi(新しい電話、たとえばS3、Galaxy Nexusなど)

基本的に、携帯電話に応じて、Androidは必要なフォルダーからリソースを取得し、存在しない場合はメインの '\ layout'または '\ drawable'フォルダーから取得します。たとえば、 Galaxy Nexusで実行されているアプリは、フォルダーが存在する場合、「\ layout-xhdpi」からリソースを取得します。

3

はい、1つのアプリを作成できますが、フォルダを作成する必要がありました:/ res/drawable、/ res/drawable-mdpi、/ res/drawable-hdpi、およびすべての画面サイズのコンテンツを追加する

0
mbelsky