1

私は Android 開発の初心者で、アプリケーションをあらゆる解像度に適応させようとしています。最近、dip の概念について耳にしましたが、この単元の目的がわかりません。画面の解像度に関係なく、同じ物理サイズで何かを表示できることがわかりました。

しかし問題は、異なる画面密度では機能しないということです。つまり、幅が 80dip の画像を定義すると、結果は 160dpi の画面と 320dpi の画面で同じにならないということです。そのため、コンポーネントをデバイスに適応させるために何かをコーディングする必要がある場合、このユニットの目的を本当に理解できません。

このビューがすべてのデバイスで同じ(またはほぼ)になるように、xmlでレイアウトを定義するにはどうすればよいですか(コードは何も必要ありません:/)。

そのような単位ではなく、レイアウト(xml)でパーセンテージを使用できない理由が本当にわかりません。

大変お世話になりました。

PS:私の英語でごめんなさい:(

4

1 に答える 1

3

ディップ (dp とも呼ばれる) の考え方は、ディスプレイの物理的なピクセル密度に関係なく、同じサイズの仮想ピクセルを持つことです。

1dp = 160 ピクセル/インチで 1 ピクセル (中密度ディスプレイ — mdpi)

ピクセル密度が高い場合、1 dp は複数の物理ピクセルになり、密度が低い場合、1 dp を超えると 1 つの物理ピクセルのサイズになります。

サイズを px で指定すると、物理ピクセルを指定することになり、高密度デバイスでは同じオブジェクトが小さく表示されます。

画像は通常、それらが見つかったリソース フォルダーに基づいてスケーリングされます。.png ファイルを に配置する/res/drawableと、システムはそのファイルが mdpi (表示密度 160 ピクセル/インチ) に対して適切なサイズであると想定します。実際のディスプレイがたまたま 240 ピクセル/インチ (hdpi) の場合、システムはイメージをロードするときに、イメージを 1.5 倍 (= 240 / 160) で自動的にスケーリングします。その結果、画像はすべての画面密度で同じ物理サイズで表示されます。

密度固有のリソース フォルダー ( 、 など) を使用して、密度ごとに異なるグラフィックを提供でき/res/drawable-mdpiます/res/drawable-hdpi。これは、システムのスケーリングによって画質が許容できないほど低下した場合に一般的に行われます。グラフィックスを挿入し/res/drawable-nodpiて、このスケーリングを抑えることもできます。

詳細については、チュートリアルのさまざまな密度のサポートを参照してください。

于 2013-10-01T21:57:54.443 に答える