最後に、複数の画面のレイアウトとアイコンを処理する構造を作成しました。
Android は、次の 2 つのパラメーターに基づいて、デバイスの表示をカテゴリに一般化します。
- 画面サイズ、ディスプレイの物理的なサイズ (対角線で測定)
- 画面密度、ディスプレイの物理的なピクセル密度 (1 インチあたりのピクセル数、または ppi)`
画面サイズと密度をすばやく確認するには、Android 用 の「 What's my Size 」アプリをインストールしてください。
画面サイズ
Android では、4 つの一般化された画面サイズが定義されています。
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など大画面のスマホがたくさんあります
- Samsung Galaxy Tab のような小型のタブレットは大型 (4 インチより大きい) に分類されます。
- 特大サイズは、大型タブレットなどの大型デバイスに適用されます
Android では、4 つの一般化された画面密度が定義されています。
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
フォルダーを取得してAdobe Photoshopを開きます(推奨)複数のサイズのアクションを作成します(パーセンテージに従ってサイズを変更するだけです)すべてのサイズのアクションを作成したら、実行しますバッチ自動化して、ソース (drawable-hdpi) と宛先 (drawable-ldpi、drawable-mdpi、drawable-xdpi) を指定します。
Photoshop を使用することをお勧めする理由は、アクションを使用して画像のサイズを自動的に変更し、ファイルの名前を変更する必要がないことです (元のファイルと同じ名前が割り当てられます)。
すべてのイメージの作成が完了したら、プロジェクトを更新してテストします。
画面(xhdpi、hdpi、mdpi)をサポートするレイアウトが小さな画面(ldpi)で切り取られる可能性があるため、これを処理するには、別のレイアウトフォルダー(layout-small)を作成して追加しますScrollView
(ほとんど)。それでおしまい。
タブレット
タブレットは 2 つのサイズに分類されます。
- 7"(1024X(600-48(ナビゲーションバー))) = 1024X552 (drawable-large)
- 10"(1280X(800-48(ナビゲーションバー))) = 1280X752 (drawable-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 (幅または高さ) のデバイスはこのフォルダーのリソースを使用します。
たとえば、dp から drawable-sw?dp の接尾辞を見つけるにSamsung Galaxy S3
はDP計算を
参照して、レイアウトまたはドローアブルを S3 にサポートする場合、計算は次のようになります。
px= デバイスの幅 = 720
dpi= デバイスの密度 = 320
与えられた式
px = dp * (dpi / 160)
px の値があるため、数式を交換します
dp = px / (dpi / 160)
今価値を置いて、
dp= 720 / (320/160);
dp=360.
だからdrawable-sw360dp
仕事をする
GsmArenaからデバイス構成を取得します同じ
方法で、デバイスの Android API バージョン、つまり drawable-hdpi-v11` に従ってフォルダーを作成することもできます。これにより、API11 を備えたデバイスであり、Hdpi である場合、このリソースが使用されます。
追加のヒント:
相対レイアウト、dp、sp、および mm を使用する
dp 単位- 160 ppi 画面、つまり中密度の 1 物理ピクセルに正規化された、デバイスに依存しないピクセル。実行時にスケーリングされます。画面要素の寸法に使用
sp units - 浮動小数点値として指定されたスケーリングされたピクセル。dp 単位に基づいていますが、ユーザーの font-size プリファレンス設定に合わせてさらにスケーリングされます。実行時にスケーリングされます。フォントサイズに使用
レイアウトには常に RelativeLayout を使用する必要があります。AbsoluteLayout は非推奨であり、使用しないでください。
適切な画像形式を使用する - PNG と JPEG
Android "prefers" PNG for bitmap image files, "accepts" JPEG, and "discourages" GIF.
ただし、PNG と JPEG は同等ではありません。それらにはさまざまな品質のトレードオフがあり、PNG が常に最適であるとは限りません。
JPEGは、PNG よりもファイル サイズを最大 50% 削減できます。これは、アプリが画像を多用する場合に重要です。
高品質の「非可逆」JPEG は、同じファイル サイズの場合、高度に圧縮された「可逆」PNG よりも見栄えがよい場合があります。
デバッグ用に画像やグラフィックスにラベルを追加する
supports-screens 要素を使用する
実際のデバイス値を使用してエミュレーターを構成する
通常、デスクトップ システムは 72ppi (Mac) または 96ppi (Windows、Linux) で表示されます。モバイルと比較すると、デスクトップ ディスプレイは常に低密度です。
実際のデバイスの値を模倣するように Android エミュレーターを常に構成し、デバイスの密度をエミュレートするためにスケーリングするように常に設定してください。
Eclipse では、実際のデバイスの値で構成された複数のエミュレーターを簡単に作成できます (Eclipse メニュー バーから [ウィンドウ] > [AVD マネージャー] > [新規] を選択します)。
エミュレートしている実際のデバイスのエミュレータに名前を付けます 解像度を指定します。組み込みの一般的なサイズは使用しないでください デバイス密度を実際のデバイスに一致するように設定します ([ハードウェア] ペインで、[抽象化された LCD プロパティ] を実際の密度に設定します。常に整数値です)。
デバイスを起動するときは、常に [表示を実際のサイズに合わせる] を選択し、実際の画面の寸法をインチで入力します。
デバイス密度を設定しない場合、エミュレータはデフォルトで低密度になり、常に ldpi 固有のリソースをロードします。解像度 (ピクセル寸法) は正しくなりますが、密度に依存する画像リソースは意図したとおりに表示されません。
もちろん、低密度のデスクトップ ディスプレイで高密度の画質を再現することはできません。
2012 年 10 月 1 日までの 7 日間に収集されたデータは次のとおりです。Android プラットフォームのバージョンに関する最新の統計情報を確認するには、ここにアクセスしてください。
画面サイズに基づく
画面密度に基づく