Androidの測定単位の違いは何ですか?
- px
- 浸漬
- dp
- sp
Androidの測定単位の違いは何ですか?
px
> Pixels-画面上の実際のピクセルに対応します。
in
>インチ-画面の物理的なサイズに基づきます。
>1インチ=2.54センチメートル
mm
>ミリメートル-画面の物理的なサイズに基づきます。
pt
>ポイント-画面の物理的なサイズに基づいて1/72インチ。
dpまたはdip
>密度に依存しないピクセル-画面の物理的な密度に基づく抽象的な単位。これらの単位は160dpi画面を基準にしているため、1dpは160dpi画面の1ピクセルです。dpとピクセルの比率は画面密度に応じて変化しますが、必ずしも直接の比率である必要はありません。注:コンパイラーは「dip」と「dp」の両方を受け入れますが、「dp」は「sp」とより一貫性があります。
sp
>スケーラブルピクセル または スケールに依存しないピクセル-これはdp単位に似ていますが、ユーザーのフォントサイズ設定によってもスケーリングされます。フォントサイズを指定するときは、この単位を使用することをお勧めします。これにより、画面密度とユーザーの好みの両方に合わせてフォントサイズが調整されます。Androidのドキュメントは、sp
実際の意味と一致していないことに注意してください。一方のドキュメントには「スケールに依存しないピクセル」と記載されており、もう一方のドキュメントには「スケール可能なピクセル」と記載されています。
密度バケット | 画面密度 | 物理的サイズ | ピクセルサイズ |
---|---|---|---|
ldpi | 120 dpi | 0.5x0.5インチ | 0.5インチ*120dpi = 60x60 px |
mdpi | 160 dpi | 0.5x0.5インチ | 0.5インチ*160dpi = 80x80 px |
hdpi | 240 dpi | 0.5x0.5インチ | 0.5インチ*240dpi = 120x120 px |
xhdpi | 320 dpi | 0.5x0.5インチ | 0.5インチ*320dpi = 160x160 px |
xxhdpi | 480 dpi | 0.5x0.5インチ | 0.5インチ*480dpi = 240x240 px |
xxxhdpi | 640 dpi | 0.5x0.5インチ | 0.5インチ*640dpi = 320x320 px |
単位 | 説明 | 物理インチあたりの単位 | 密度に依存しませんか? | すべての画面で同じ物理サイズ? |
---|---|---|---|---|
px | ピクセル | 不定 | いいえ | いいえ |
の | インチ | 1 | はい | はい |
んん | ミリメートル | 25.4 | はい | はい |
pt | ポイント | 72 | はい | はい |
dp | 密度に依存しないピクセル | 〜160 | はい | いいえ |
sp | スケールに依存しないピクセル | 〜160 | はい | いいえ |
詳細については、Googleデザインドキュメントもご覧ください。
これに関するほとんどすべてと、さまざまなサイズと密度の複数の画面の最高のサポートを実現する方法は、ここに非常によく文書化されています。
画面サイズ
画面の対角線として測定された実際の物理サイズ。簡単にするために、Androidはすべての実際の画面サイズを、小、通常、大、特大の4つの一般的なサイズにグループ化します。画面密度画面
の物理領域内のピクセル数。通常、dpi(1インチあたりのドット数)と呼ばれます。たとえば、「低」密度の画面は、「通常」または「高密度」の画面と比較して、特定の物理領域内のピクセルが少なくなります。簡単にするために、Androidは、すべての実際の画面密度を6つの一般化された密度(低、中、高、超高、超超高、および超超高)にグループ化します。向き
ユーザーの視点から見た画面の向き。これは横向きまたは縦向きのいずれかであり、画面のアスペクト比がそれぞれ広いまたは高いことを意味します。デフォルトでは、さまざまなデバイスがさまざまな向きで動作するだけでなく、実行時にユーザーがデバイスを回転させると向きが変わる可能性があることに注意してください。
解像度
画面上の物理ピクセルの総数。複数の画面のサポートを追加する場合、アプリケーションは解像度で直接動作しません。アプリケーションは、一般化されたサイズと密度のグループで指定されているように、画面のサイズと密度のみに関係する必要があります。
密度に依存しないピクセル(dp)
UIレイアウトを定義するときに、密度に依存しない方法でレイアウトの寸法または位置を表現するために使用する必要がある仮想ピクセル単位。密度に依存しないピクセルは、160 dpi画面の1つの物理ピクセルに相当します。これは、「中」密度画面のシステムで想定されるベースライン密度です。実行時に、システムは、使用中の画面の実際の密度に基づいて、必要に応じてdp単位のスケーリングを透過的に処理します。dp単位から画面ピクセルへの変換は簡単ですpx = dp * (dpi / 160)
。たとえば、240 dpiの画面では、1dpは1.5物理ピクセルに相当します。アプリケーションのUIを定義するときは、密度の異なる画面でUIが適切に表示されるように、常にdp単位を使用する必要があります。
複数の種類のデバイス用のAndroidアプリの開発に真剣に取り組んでいる場合は、画面サポート開発ドキュメントを少なくとも1回読んでおく必要があります。それに加えて、特定の画面構成を持つアクティブなデバイスの実際の数を知ることは常に良いことです。
dpがどのように正確にpxに変換されるかについて詳しく説明します。
150 x 150 px
画像は150 * 150 dp
画面スペースを占有します。150 x 150 px
画像は100 * 100 dp
画面スペースを占有します。150x150 px
画像は75 * 75 dp
画面スペースを占有します。100 * 100 dp
逆の場合:たとえば、アプリケーションに画像を追加し、コントロールを埋めるために画像が必要だとします。サポートされている画面サイズに合わせて、さまざまなサイズの画像を作成する必要があります。
100 * 100 px
mdpiの画像150 * 150 px
hdpiの画像200 * 200 px
xhdpiの画像px-ピクセル-スケールあたりのポイントは、画面上の実際のピクセルに対応します。
i-インチ-画面の物理的なサイズに基づきます。
mm-ミリメートル-画面の物理的なサイズに基づきます。
pt-ポイント-画面の物理的なサイズに基づく1/72インチ。
dp-密度に依存しないピクセル-画面の物理的な密度に基づく抽象的な単位。これらの単位は160dpi画面を基準にしているため、1つdp
は160dpi画面の1ピクセルです。dpとピクセルの比率は画面密度に応じて変化しますが、必ずしも直接の比率である必要はありません。注:コンパイラーはとの両方dip
を受け入れdp
ますdp
が、より一貫性がありsp
ます。
sp-スケーラブルピクセル-これはdp
単位に似ていますが、ユーザーのフォントサイズの設定によってもスケーリングされます。フォントサイズを指定するときは、この単位を使用することをお勧めします。これにより、画面密度とユーザーの好みの両方に合わせてフォントサイズが調整されます。
同じサイズであるが、1つは160 dpi(1インチあたりのドット数、つまり1インチあたりのピクセル数)の画面密度を持ち、もう1つは240dpiの2つの画面の例を考えてみましょう。
Lower resolution screen Higher resolution, same size
Physical Width 1.5 inches 1.5 inches
Dots Per Inch (“dpi”) 160 240
Pixels (=width*dpi) 240 360
Density (factor of baseline 160) 1.0 1.5
Density-independent pixels 240 240
(“dip” or “dp” or “dps”)
Scale-independent pixels
(“sip” or “sp”) Depends on user font size settings same
さらに、次の概念を明確に理解している必要があります。
画面サイズ:
画面の対角線として測定された実際の物理サイズ。簡単にするために、Androidはすべての実際の画面サイズを、小、通常、大、特大の4つの一般的なサイズにグループ化します。
画面密度:
画面の物理領域内のピクセル数。通常、dpi(1インチあたりのドット数)と呼ばれます。たとえば、「低」密度の画面は、「通常」または「高密度」の画面と比較して、特定の物理領域内のピクセルが少なくなります。簡単にするために、Androidはすべての実際の画面密度を、低、中、高、および超高の4つの一般化された密度にグループ化します。
オリエンテーション:
ユーザーの視点から見た画面の向き。これは横向きまたは縦向きのいずれかであり、画面のアスペクト比がそれぞれ広いまたは高いことを意味します。デフォルトでは、さまざまなデバイスがさまざまな向きで動作するだけでなく、実行時にユーザーがデバイスを回転させると向きが変わる可能性があることに注意してください。
解像度:
画面上の物理ピクセルの総数。複数の画面のサポートを追加する場合、アプリケーションは解像度で直接動作しません。アプリケーションは、一般化されたサイズと密度のグループで指定されているように、画面のサイズと密度のみに関係する必要があります。
密度に依存しないピクセル(dp):
UIレイアウトを定義するときに、密度に依存しない方法でレイアウトの寸法または位置を表現するために使用する必要がある仮想ピクセル単位。密度に依存しないピクセルは、160 dpi画面の1つの物理ピクセルに相当します。これは、「中」密度画面のシステムで想定されるベースライン密度です。実行時に、システムは、使用中の画面の実際の密度に基づいて、必要に応じてdp単位のスケーリングを透過的に処理します。dp単位から画面ピクセルへの変換は簡単です:px = dp *(dpi / 160)。たとえば、240 dpiの画面では、1dpは1.5物理ピクセルに相当します。アプリケーションのUIを定義するときは、密度の異なる画面でUIが適切に表示されるように、常にdp単位を使用する必要があります。
dp
です dip
。すべて(マージン、パディングなど)に使用します。
sp
{text-size}にのみ使用してください。
px
、dp
およびsp
さまざまな画面サイズの違いを確認してください。
pxまたはdotは、物理画面上のピクセルです。
dpiは、物理画面の1インチあたりのピクセル数であり、ディスプレイの密度を表します。
Androidはいくつかの密度にエイリアス名を付けます
dipまたはdpは密度に依存しないピクセルです。つまり、物理的な密度に応じて、多かれ少なかれピクセルに対応します。
spまたはsipは、スケールに依存しないピクセルです。>で[大きなテキスト]オプションがオンになっている場合、これらは拡大縮小されます。SettingsAccessibility
テキストサイズにはspを使用します。
他のすべてにはdpを使用します。
ソース3 :(ソース3からのデータを以下に示します)
これらは、XMLで定義されたディメンション値です。寸法は、数値の後に測定単位を付けて指定されます。例:10px、2in、5sp。Androidでは次の測定単位がサポートされています。
dp
密度に依存しないピクセル-画面の物理的な密度に基づく抽象的な単位。これらの単位は、160 dpi(1インチあたりのドット数)の画面を基準にしており、1dpはほぼ1pxに相当します。高密度の画面で実行する場合、1dpを描画するために使用されるピクセル数は、画面のdpiに適した係数で拡大されます。同様に、低密度の画面では、1dpに使用されるピクセル数が縮小されます。dpとピクセルの比率は画面密度に応じて変化しますが、必ずしも直接の比率である必要はありません。(px単位の代わりに)dp単位を使用することは、レイアウト内のビューの寸法をさまざまな画面密度に合わせて適切にサイズ変更するための簡単なソリューションです。つまり、さまざまなデバイス間でUI要素の実際のサイズに一貫性を提供します。
sp
スケールに依存しないピクセル-これはdp単位に似ていますが、ユーザーのフォントサイズの設定によってもスケーリングされます。フォントサイズを指定するときは、この単位を使用することをお勧めします。これにより、画面密度とユーザーの好みの両方に合わせてフォントサイズが調整されます。
pt
ポイント-画面の物理的なサイズに基づいて1/72インチ。
px
ピクセル-画面上の実際のピクセルに対応します。実際の表現はデバイスによって異なる可能性があるため、この測定単位はお勧めしません。各デバイスの1インチあたりのピクセル数は異なり、画面で使用できるピクセルの総数は多かれ少なかれあります。
んん
ミリメートル-画面の物理的なサイズに基づきます。
の
インチ-画面の物理的なサイズに基づきます。
注:ディメンションは、(XMLファイルの名前ではなく)name属性で指定された値を使用して参照される単純なリソースです。そのため、1つの要素の下で1つのXMLファイル内のディメンションリソースを他の単純なリソースと組み合わせることができます。
基本的に、pxが適用されるのは1ピクセルだけです。これは、仕切りの場合のように、画面上に正確に1ピクセルが必要な場合です。
160 dpiを超えると、2〜3ピクセルになる可能性があります。
120 dpiを超えると、0に丸められます。
px
ピクセル-画面上の実際のピクセルに対応します。
dpまたはdip
密度に依存しないピクセル-画面の物理的な密度に基づく抽象的な単位。これらの単位は160dpi画面を基準にしているため、1dpは160dpi画面の1ピクセルです。
dpの使用:
密度の独立性-アプリケーションは、さまざまな密度の画面に表示されたときにユーザーインターフェイス要素の物理的なサイズ(ユーザーの観点から)を維持することで、「密度の独立性」を実現します。(つまり)画像は、さまざまな種類の画面で同じサイズ(拡大または縮小ではない)に見える必要があります。
sp
スケールに依存しないピクセル-これはdp単位に似ていますが、ユーザーのフォントサイズの設定によってもスケーリングされます。
http://developer.android.com/guide/topics/resources/more-resources.html#Dimension
UIレイアウトを定義するときに、密度に依存しない方法でレイアウトの寸法または位置を表現するために使用する必要がある仮想ピクセル単位。上記のように、密度に依存しないピクセルは、160 dpi画面の1つの物理ピクセルに相当します。これは、「中」密度画面のシステムで想定されるベースライン密度です。実行時に、システムは、使用中の画面の実際の密度に基づいて、必要に応じてdp単位のスケーリングを透過的に処理します。dp単位から画面ピクセルへの変換は簡単です。
px = dp *(dpi / 160)。
たとえば、240 dpiの画面では、1dpは1.5物理ピクセルに相当します。アプリケーションのUIを定義するときは、密度の異なる画面でUIが適切に表示されるように、常にdp単位を使用する必要があります。
ピクセルからdp、またはその逆を理解することは非常に重要です(特にクリエイティブチームに正確なdp値を与えるため)
dp = px * 160 / dpi
MDPI = 160 dpi || Therefore, on MDPI 1 px = 1 dp
For example, if you want to convert 20 pixel to dp, use the above formula,
dp = 20 * 160 / 160 = 20.
So, 20 pixel = 20 dp.
HDPI = 240 dpi - So, on HDPI 1.5 px = 1 dp
XHDPI = 320 dpi - So, on XHDPI 2 px = 1 dp
XXHDPI = 480 dpi - So, on XXHDPI 3 px = 1 dp
For example, let us consider Nexus 4.
If 24 pixels to be converted to dp and if it is a Nexus 4 screen, developers can
convert it to dp easily by the following calculation :
dp = 24 * 160 / 320 = 12 dp
Screen dimension:
768 x 1280 pixel resolution (320 ppi or 320dpi)
Optional (screen size):
4.7" diagonal
それは上で説明されています。レイアウトファイルでは避けてください。ただし、pxが必要な場合もあります。たとえば、ListViewの分割線。ここでは、すべての画面解像度の仕切りとして1ピクセルの線を与えるにはpxの方が適しています。
フォントサイズにはspを使用します。次に、デバイスのフォントサイズが変更されている間(つまり、[表示]-> [デバイス上のフォント])、アプリケーション内のフォントのみが変更されます。アプリ内で静的なサイズのフォントを保持する場合は、フォントのサイズをdpで指定できます。そのような場合、それは決して変わりません。開発者は、特定の画面に対してそのような要件を取得する場合があります。そのため、開発者はspの代わりにdpを使用できます。それ以外の場合は、spをお勧めします。
px
下の画像との違いを確認できます。また、とが異なる画面で同じ物理サイズを保証できなかっdp
たこともわかります。px
dp
テキストのサイズと外観に関連するものはすべて、sp
またはを使用する必要がありますpt
。一方、コントロールのサイズ、レイアウトなどに関連するものはすべて、で使用する必要がありますdp
。
dp
とdip
その場所の両方で使用できます。
私はdpのみを使用します。
フォントサイズに「sp」を使うことについては多くの話がありますが、その点は評価できますが、デザインの観点からは正しいことではないと思います。ユーザーがフォントサイズの選択に問題がある場合、デザインを壊してしまう可能性があり、ユーザーは自分の人生の選択ではなく、アプリを非難することになります。
また、160 dpiのタブレットでsp-fontアプリを使用すると、すべてがスケールアップすることがわかります...しかし、フォントは、比較すると小さく見えます。見栄えが良くありません。
「sp」フォントのアイデアには良い心がありますが、それは悪いアイデアです。すべてのためにdpに固執します。
sp=スケールに依存しないピクセル
dp =dip=密度に依存しないピクセル
dpi=インチあたりのドット数
spの使用は避けてください。
複数の画面をサポートするには、 dpを使用する必要があります。
Androidはさまざまな画面解像度をサポートしています
120 dp ldpiデバイスには、1インチサイズで120ピクセルがあります。
他の密度についても同じです...
私たちソフトウェアエンジニアは、次の変換式を使用する必要があります。
ピクセル=dp*(密度/ 160)
したがって、240dpiデバイスの1dpは=1 *(240/160)= 3/2=1.5ピクセルになります。
また、480dpiデバイスの1dpは=1 *(480/160)=3ピクセルになります。
この1.5ピクセルと3ピクセルの知識を使用して、ソフトウェアエンジニアはさまざまな密度のレイアウトを設計できます。
デバイスの画面パラメータを確認するには:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
Toast.makeText(
this,
"4:" + metrics.heightPixels + "," + metrics.density + ","
+ metrics.densityDpi, Toast.LENGTH_LONG).show();
公式ドキュメントからコピーした回答で「ユーザーのフォントサイズ設定」と記載されている単位dp
との違いは、オプションを変更することで実行時に確認できます。sp
Settings->Accessibility->Large Text
Large Text
オプションを使用すると、テキストが1.3
数倍大きくなります。
private static final float LARGE_FONT_SCALE = 1.3f;
これは、 packages / apps / Settingsにあるため、もちろんベンダーに依存する可能性があります。
dpi-
px-ピクセル
pt-ポイント
in-インチ-物理的な画面サイズ(1インチ= 2.54cm)に対して。
mm-ミリメートル-物理的な画面サイズに関して。
sp-スケールに依存しないピクセル。
ディップ-
標準では、dpとspが使用されます。フォントサイズの場合はsp、その他すべての場合はdp。
単位の変換式:
px = dp *(dpi / 160);
Density Bucket -> Screen Display => Physical Size => Pixel Size
ldpi -> 120 dpi => 0.5 x 0.5 in => 0.5 in * 120 dpi = 60x60 px
mdpi -> 160 dpi => 0.5 x 0.5 in => 0.5 in * 160 dpi = 80x80 px
hdpi -> 240 dpi => 0.5 x 0.5 in => 0.5 in * 240 dpi = 120x120 px
xhdpi -> 320 dpi => 0.5 x 0.5 in => 0.5 in * 320 dpi = 160x160 px
xxhdpi -> 480 dpi => 0.5 x 0.5 in => 0.5 in * 480 dpi = 240x240 px
xxxhdpi -> 640 dpi => 0.5 x 0.5 in => 0.5 in * 640 dpi = 320x320 px
コミュニティウィキからの回答をお読みください。以下は、上記の回答に加えて考慮すべきいくつかの情報です。ほとんどのAndroid開発者はアプリの開発中にこれを見逃しているので、これらのポイントを追加しています。
sp=スケールに依存しないピクセル
dp=密度に依存しないピクセル
dpi=密度ピクセル
私は上記の答えを通り抜けました...それらが正確に正しいとは思いません。テキストサイズの場合はsp、レイアウト境界の場合はdp-標準。ただし、テキストサイズのspは、ほとんどのデバイスで不注意に使用するとレイアウトが崩れます。
spはデバイスのテキストサイズを取得しますが、dpはデバイス密度標準のテキストサイズを取得します(デバイスでは変更されません)デバイスに設定されているフォントサイズに応じて、100spテキストが画面の80%または100%を占める可能性があるとします
レイアウトの境界にspを使用することもできます。これは機能します:) 標準的なアプリではテキスト全体にspを使用しません
UXを考慮したテキストサイズにはspとdpを使用します。
一部の人々は、読みやすくするために携帯電話で巨大なFONTサイズを使用しており、ハードコードされた小さなサイズのテキストを与えることはUXの問題になります。必要に応じてテキストにspを付けますが、ユーザーが設定を変更したときにレイアウトが崩れないようにしてください。
同様に、すべてのディメンションをサポートする単一のアプリがある場合、xxxhdpiアセットを追加すると、アプリのサイズが大幅に増加します。しかし、今ではxxxhdpi電話が一般的であるため、少なくともサイドバー、ツールバー、および下部バーのアイコンにはxxxhdpiアセットを含める必要があります。すべての画面サイズで均一で高品質の画像を得るには、ベクター画像に移行することをお勧めします。
また、人々は自分の携帯電話でカスタムフォントを使用していることに注意してください。したがって、フォントが不足していると、間隔やすべてに関して問題が発生する可能性があります。カスタムフォントのテキストサイズ12spは、デフォルトのフォントよりも数ピクセル余分にかかる場合があります。
Androidの画面密度と基本密度の詳細については、Googleデベロッパーサイトを参照してください。 https://developer.android.com/training/multiscreen/screendensities
の画面サイズは、、、、、、およびのAndroid
カテゴリsmall
にグループmedium
化large
さextra large
れています。画面密度は、画面の領域(1インチなど)内のピクセル数です。通常、1インチあたりのドット数(dpi)で測定されます。画面密度は、低、中、高、および超高にグループ化されます。解像度は、画面上のピクセルの総数です。double-extra
triple-extra
単位間の変換式
px = dp * (dpi / 160)
デバイスのdpからpx
次の例は、理解を深めるのに役立つ場合があります。スケーリングは、120(ldpi)、160(mdpi)、240(hdpi)、320(xhdpi)、480(xxhdpi)、および640(xxxhdpi)のバケットサイズに基づいて行われます。Googleが推奨する設計の比率は、ldpi:mdpi:hdpi:xhdpi:xxhdpiで3:4:6:8:12です。
150pxX150pxの画像が占有されます。
- mdpiの150dpX150dp画面スペース
- 100 dp X 100 dpの画面スペース(hdpi)
- xhdpiの75dpX75dp画面スペース
すべてのAndroidデバイスで統一されたUIデザインを使用したい場合は、次のDPI計算機を使用して画像サイズやその他のサイズを修正できます。
/*
Program output
LDPI: 165.0 X 60.0
MDPI: 220.0 X 80.0
HDPI: 330.0 X 120.0
XHDPI: 440.0 X 160.0
XXHDPI: 660.0 X 240.0
XXXHDPI: 880.0 X 320.0
*/
public class DPICalculator {
private final float LDPI = 120;
private final float MDPI = 160;
private final float HDPI = 240;
private final float XHDPI = 320;
private final float XXHDPI = 480;
private final float XXXHDPI = 640;
private float forDeviceDensity;
private float width;
private float height;
public DPICalculator(float forDeviceDensity, float width, float height){
this.forDeviceDensity = forDeviceDensity;
this.width = width;
this.height = height;
}
public static void main(String... args) {
DPICalculator dpiCalculator = new DPICalculator(240,330,120);
dpiCalculator.calculateDPI();
}
private float getPx(float dp, float value) {
float px = dp * (value / forDeviceDensity );
return px;
}
private void calculateDPI() {
float ldpiW = getPx(LDPI,width);
float ldpiH = getPx(LDPI,height);
float mdpiW = getPx(MDPI,width);
float mdpiH = getPx(MDPI,height);
float hdpiW = getPx(HDPI,width);
float hdpiH = getPx(HDPI,height);
float xdpiW = getPx(XHDPI,width);
float xdpiH = getPx(XHDPI,height);
float xxdpiW = getPx(XXHDPI,width);
float xxdpiH = getPx(XXHDPI,height);
float xxxdpiW = getPx(XXXHDPI,width);
float xxxdpiH = getPx(XXXHDPI,height);
System.out.println("LDPI: " + ldpiW + " X " + ldpiH);
System.out.println("MDPI: " + mdpiW + " X " + mdpiH);
System.out.println("HDPI: " + hdpiW + " X " + hdpiH);
System.out.println("XHDPI: " + xdpiW + " X " + xdpiH);
System.out.println("XXHDPI: " + xxdpiW + " X " + xxdpiH);
System.out.println("XXXHDPI: " + xxxdpiW + " X " + xxxdpiH);
}
}
詳細については、次のリンクを参照してください。
http://javapapers.com/android/difference-between-dp-dip-sp-px-in-mm-pt-in-android/
Androidで使用される式は次のとおりです。
px = dp *(dpi / 160)
ここで、dpiは次の画面密度のいずれかです。可能なすべての密度のリストについては、こちらをご覧ください
「DENSITY_*」定数を定義します。
ここから撮影。
画面のdpiがわかっている場合、これにより、pxとdpの間で変換する際の多くの混乱が解消されます。
したがって、hdpi画面に60 dpの画像が必要な場合、60dpの物理ピクセルサイズは次のようになります。
px = 60 * (240 / 160)
通常、spはフォントサイズに使用され、dipは他のフォントサイズに使用されます(dpとも呼ばれます)。
さまざまな画面解像度でAndroidアプリのUIを設計することについての良い記事に出くわしました。この分野で検索している人のために、ここに残しておきたいと思います。はい、私はそれがどういうわけかグーグルドキュメントで説明されていることを知っています(そして上記の投稿で言及されています)、私はそれを読みました、しかしそれは私にとって良くありませんでした(ええ、私はあまりにも愚かかもしれません))。さまざまな画面サイズに対応できるレイアウトを設計する方法がわかりませんでした。さまざまな画面に「柔軟な」UIレイアウトを実装する必要がある場合は、DPの概念などが嫌いです。(iOS開発者の皆さん-はい、そうです、それはストーリーボードの概念です)。
Androidには悪いUIコンセプトはありませんが、残念ながらiOSストーリーボード機能がありません。Androidで柔軟なUIを設計することは、(せいぜい)簡単なことではありません。
さまざまな画面サイズのレイアウトを作成するためにAndroidで何をすべきかを理解するのに役立つ記事を次に示します。
JMSTUDIOブログ:-Androidアプリの画面サイズを決定する
さまざまな画面サイズのAndroidアプリのUIを設計する方法
さまざまな画面サイズのアプリUIを設計するには、最初の設計で各画面サイズに必要な最小スペースを満たす必要があります。Androidは、一般化された画面タイプごとに最小サイズ(dp)を定義します。これがAndroidの画面サイズのガイドラインです。
画面サイズをdpで取得する場合、AndroidアプリのUIを設計するだけでは不十分です。画面サイズごとに、密度ごとにグラフィックとビットマップ画像を準備する必要があります。これがAndroidの画面密度のガイドラインです。
簡単に計算できるように、4つの一般化された密度間の3:4:6:8のスケーリング比に従うことができます。ldpiデバイス用に36×36ピクセルの画像を作成する場合、残りの密度の画像サイズは、mdpiの場合は48×48、hdpiの場合は72×72、xhdpiの場合は96×96になります。
PhotoshopでAndroidアプリのUIをデザインする方法
多くのデザイナーは、密度に依存しない単位であるdpのために、フォトショップや別のピクセルベースのグラフィックデザインツールでAndroidアプリのUIをデザインする際に問題を抱えています。設計者は、dpをピクセルにマップする方法を知りません。また、Googleは、dpとピクセルの変換の基本的な公式を提供していますが、明確なAndroidUIデザインガイドを提供していません。
Androidの定義として、1pdは160 dpiデバイス(mdpi)で1pxに相当します。したがって、mdpi密度のxlarge Androidデバイス用のAndroidアプリを設計したいので、ピクセル単位のUIサイズを幅960ピクセル、高さ720ピクセルとして定義できます。同じマッピングルールに従うと、Androidアプリの画面サイズUIデザインガイドラインに従うことができます。
追加:「柔軟な」UIにも興味がある場合は、次のライブラリをご覧ください:新しいサイズの単位であるsdp(スケーラブルdp)を提供するAndroidSDK。このサイズの単位は、画面サイズに比例します(これは、SDP
ライブラリについての回答でも言及されています)
ADDED2 Googleは、iOSストアボードUIの概念の有用性をようやく理解しました。これはConstraintLayout
、Androidの世界に当てはまります。ConstraintLayoutを使用してレスポンシブUIを構築する
1)dp: (density independent pixels)
1単位のdpで表されるピクセル数は、画面の解像度が上がるにつれて増加します(1インチあたりのドット数/ピクセル数が多い場合)。逆に、解像度の低いデバイスでは、dpの単位で表されるピクセル数が減少します。これは相対的な単位であるため、比較するベースラインが必要です。このベースラインは160dpiの画面です。これは方程式です:px = dp * (dpi / 160).
2)sp: (scale independent pixels)
この単位は、画面のdpi(dpと同様)およびユーザーのフォントサイズの設定に応じて拡大縮小されます。
3)px: (pixels)
画面上の実際のピクセルまたはドット。
詳細については、次のWebサイトをご覧ください。
Androidの画面サイズは、、、、、、およびのカテゴリldpi
にグループmdpi
化hdpi
さxhdpi
れています。画面密度は、画面の領域(インチなど)内のピクセルの量です。通常、1インチあたりのドット数()で測定されます。xxhdpi
xxxhdpi
dpi
PX(Pixels):
px
絶対ピクセルを対象としています。これは、幅または高さの絶対ピクセルで指定する場合に使用されます。推奨されません。DP/DIP(Density pixels / Density independent pixels):
dip == dp
。以前のAndroidバージョンでは、dipが使用され、後でに変更されましたdp
。これはの代替ですpx
。
px
絶対値であるため、通常は使用しません。を使用px
して幅または高さを設定し、そのアプリケーションがさまざまな画面サイズのデバイスにダウンロードされている場合、そのビューは画面の元のサイズに従って拡大されません。
dp
の代わりに使用することを強くお勧めしますpx
。dp
画面サイズに基づいて動的に拡大および縮小する幅と高さについて言及する場合に使用します。
を指定するとdp/dip
、Androidは160ピクセルサイズの画面に基づいてピクセルサイズを自動的に計算します。
SP(Scale independent pixels):
ユーザーのフォントサイズの設定に基づいてスケーリングされます。フォントはを使用する必要がありますsp
。
さまざまな画面サイズに合うフォントサイズについて言及する場合は、を使用してsp
ください。これはに似ていdp
ます。sp
特にフォントサイズが画面サイズに基づいて動的に拡大および縮小する場合に使用します。
Androidのドキュメントによると:
寸法を指定するときは、常に
dp
またはsp
単位を使用してください。Adp
は、160のピクセルの物理サイズに対応する、密度に依存しないピクセルですdpi
。Ansp
は同じ基本単位ですが、ユーザーの好みのテキストサイズ(スケールに依存しないピクセル)によってスケーリングされるため、テキストサイズを定義するときにこの測定単位を使用する必要があります
携帯電話の画面は、ピクセル(px)と呼ばれる何千もの小さな点で構成されています。ピクセルは、画像を作成するための最小の要素です。画像や文言を作成するピクセル数が多いほど、画像が鮮明になり、スマートフォンの画面が読みやすくなります。
画面の解像度は、画面上のピクセル数で測定されます。画面の解像度は、デバイスを購入するときに一般的に使用される仕様ですが、Android向けに設計する場合、実際にはそれほど有用ではありません。ピクセルの観点から画面を考えると、タッチデバイスにとって非常に重要な物理的なサイズの概念が無視されるためです。
密度に依存しないピクセル(dpまたはdip)を使用すると、設計者は、ターゲットデバイスの解像度や密度に関係なく、期待どおりに表示されるアセットを作成できます。
密度に依存しないピクセル(dpまたはdip)は、ベースライン密度または160 dpi(1インチあたりのドット数)で1ピクセルに相当します。
1 px / 1dp = 160 dpi / 160 dpi
2 px / 1dp = 320 dpi(2x)/ 160 dpi
どこ、
dpiは1インチあたりのドット数です
したがって、320 dpiでは、1dpは2pxに相当します。
方式
px / dpi = dpi / 160dpi
1インチあたりのドット数(dpi)は、ディスプレイ画面のシャープネス(つまり、照らされたポイントの密度)の尺度です。同じ数のピクセルが異なるスペースに分散されているため、特定の画像解像度の1インチあたりのドット数は画面全体のサイズによって異なります。
密度に依存しないピクセルを使用すると、ピクセル解像度が同じでスペースの量が異なる2つのデバイスがある場合などの状況に対処できます。あるケースで、タブレットと電話のピクセル解像度がそれぞれ1280 x 800ピクセル(160 dpi)と800 x 1280ピクセル(320 dpi)であるとします。
タブレットはベースライン密度(160 dpi)であるため、物理的および密度に依存しないピクセルサイズは同じで、1280 x 800です。一方、電話のピクセル密度は高いため、密度に依存しないピクセルの数は物理的なものの半分になります。ピクセル。したがって、電話には400x640の密度に依存しないピクセルがあります。したがって、密度に依存しないピクセルを使用すると、タブレットのスペースが電話よりもはるかに広いことを頭の中で簡単に想像できます。
同様に、画面サイズは似ているがピクセル密度が異なる2つのデバイスがある場合、たとえば1つは800 x 1280ピクセル(320 dpi)で、もう1つは400 x 640ピクセル(160 dpi)である場合、完全に定義する必要はありません。両方のデバイスで同じである密度に依存しないピクセルの観点から資産を測定できるため、これら2つのデバイスのレイアウトは異なります。
800 x 1280ピクセル(320dpi)= 400 x 640密度に依存しないピクセル(dp)
400 x 640ピクセル(160 dpi)= 400 x 640密度に依存しないピクセル(dp)
スケールに依存しないピクセル(sp)は、フォントサイズの推奨単位です。アクセシビリティの目的で、Androidではユーザーがデバイスのフォントサイズをカスタマイズできます。テキストの読み取りに問題があるユーザーは、デバイスのフォントサイズを大きくすることができます。このオプションは通常、携帯電話またはタブレットの表示設定のフォントサイズで見つけることができます。多くの場合、ユーザー補助設定からも利用できます。
スケールに依存しないピクセルでは、デバイスのフォントサイズが通常または100%の場合、16spは16dpとまったく同じです。ただし、デバイスのフォントサイズが大きい場合、たとえば125%の場合、16spは20dpまたは1.25x16に変換されます。
フォントサイズの単位としてdpを使用する場合、ユーザーがデバイスのフォントサイズをカスタマイズしているかどうかに関係なく、そのテキストは特定の物理サイズになります。spユニットを使用すると、視力障害のある人にとってより良い体験ができます。
参照:Udacity、Google
画面のピクセル密度と解像度は、プラットフォームによって異なります。デバイスに依存しないピクセルとスケーラブルなピクセルは、プラットフォーム間でデザインに対応するための柔軟な方法を提供するユニットです。
1インチに収まるピクセル数は、ピクセル密度と呼ばれます。高密度の画面は、低密度の画面よりも1インチあたりのピクセル数が多くなります...
1インチに収まるピクセル数は、ピクセル密度と呼ばれます。高密度の画面は、低密度の画面よりも1インチあたりのピクセル数が多くなります。その結果、同じピクセルサイズのUI要素は、低密度の画面では大きく表示され、高密度の画面では小さく表示されます。
画面密度を計算するには、次の式を使用できます。
画面密度=ピクセル単位の画面幅(または高さ)/インチ単位の画面幅(または高さ)
画面のピクセル密度と解像度は、プラットフォームによって異なります。デバイスに依存しないピクセルとスケーラブルなピクセルは、プラットフォーム間でデザインに対応するための柔軟な方法を提供するユニットです。
ピクセル密度の計算1インチに収まるピクセルの数は、ピクセル密度と呼ばれます。高密度の画面は、低密度の画面よりも1インチあたりのピクセル数が多くなります...
密度の独立性とは、密度の異なる画面にUI要素を均一に表示することです。
dp (「<em> dips」と発音)と表記される密度に依存しないピクセルは、どの画面でも均一な寸法になるように拡大縮小する柔軟な単位です。マテリアルUIは、密度に依存しないピクセルを使用して、さまざまな密度の画面に要素を一貫して表示します。
この質問に答える前に、まずユニットの数を減らしましょう。したがって、ここで説明します。dpまたはdipはどちらも同じであり、密度に依存しないピクセルとして知られています。
1.px-ピクセルを表します。ピクセルは、画面上の1つのドットポイントです。一般に、モバイル業界では、PPI(ピクセル/インチ)で測定されます。画面の解像度はPPIに正比例し、1インチあたりのピクセル数が多いほど、画面の解像度は高くなります。
たとえば、200 px * 200 pxのサイズの画像を描画する場合、その外観は高解像度デバイスと低解像度デバイスで異なる必要があります。その理由は、200ピクセルの低解像度の電話の画像は、高解像度のデバイスよりも大きく見えるためです。
以下の画像は、異なる電話での同じ画像の解像度を示しています-
2.dipまたはdp-画面の物理的な密度に基づく抽象的な単位。これらの単位は160dpi画面を基準にしているため、 1dpは160dpi画面の1ピクセルです。dpとピクセルの比率は画面密度に応じて変化しますが、必ずしも直接の比率である必要はありません。「密度の独立性」とは、さまざまな密度の画面にUI要素を均一に表示することを指します。
dpは、密度160の画面上の1つの物理ピクセルに相当します。dpを計算するには:
dp =(ピクセル単位の幅* 160)/画面密度
3.sp-スケーラブルピクセルを表します。通常、 spはUIのテキストに使用され、spはフォント設定を保持します。たとえば、ユーザーが30 spより大きいフォントを選択した場合、ユーザーの好みに応じて大きく表示されるように自動スケーリングされます。
sp:スケールに依存しないピクセル
ユーザーがデバイスで使用しているフォントサイズに応じて自動的に拡大縮小されるため、テキストで使用する必要があります。
px:ピクセルまたは画像要素は画面上の単一のポイントです
Pixels(px) –画面上の実際のピクセルに対応します。これは、幅または高さの絶対ピクセルで指定する場合に使用されます。
密度に依存しないピクセル(dpまたはdip) –画面の物理的な密度に基づく抽象的な単位。これらの単位は160dpi画面を基準にしているため、1dpは160dpi画面の1ピクセルです。dpとピクセルの比率は画面密度に応じて変化しますが、必ずしも直接の比率である必要はありません。注:コンパイラーは「dip」と「dp」の両方を受け入れますが、「dp」は「sp」とより一貫性があります。
スケールに依存しないピクセル(sp) –これはdp単位に似ていますが、ユーザーのフォントサイズの設定によってもスケーリングされます。フォントサイズを指定するときは、この単位を使用することをお勧めします。これにより、画面密度とユーザーの好みの両方に合わせてフォントサイズが調整されます。
常にdpとspのみを使用してください。フォントサイズの場合はsp、その他すべての場合はdp。これにより、さまざまな密度のAndroidデバイスとUIの互換性が確保されます。ピクセルとdpの詳細については、 https://www.google.com/design/spec/layout/units-measurements.html#units-measurements-density-independent-pixels-dp-をご覧ください。
ソースURL:-http: //www.androidtutorialshub.com/what-is-the-difference-between-px-dp-dip-sp-on-android/
簡単に理解できる方法を提供したいと思いますdp
。実際、私dp
は最も理解しやすいものだと思います。dp
単なる物理的な長さの単位です。mm
またはと同じ寸法inch
です。画面サイズや解像度が何であれ、またはではなく、と書く50dp
と便利です。60dp
50/160 inch
60/160 inch
dp
1/160 inch
唯一の問題は、一部の画面のandroiddpiが正確でないことです。たとえば、160dpiに分類された画面は、実際には170dpiである可能性があります。したがって、の計算結果dp
はあいまいです。とほぼ同じである必要があります1/160 inch
。
SDP-スケーラブルサイズのユニット-基本的にはユニットではなく、さまざまな画面サイズのディメンションリソースです。
Intuitのsdpライブラリを試してください。ユニットの問題を解決するのは非常に便利で、複数の画面をすばやくサポートできます。
使用法
android:paddingBottom="@dimen/_15sdp"
正およびandroid:layout_marginTop="@dimen/_minus10sdp"
負のsdpsdp
これは、フォルダー内の各サイズのdpで同等の値を持ちvalues-sw<N>dp
ます(sw = minimumWidth)。
注意
慎重に使用してください!ほとんどの場合、タブレット用に別のレイアウトを設計する必要があります。
例
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_minus10sdp"
android:paddingBottom="@dimen/_15sdp"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:includeFontPadding="false"
android:text="♡"
android:textColor="#ED6C27"
android:textSize="@dimen/_70sdp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:includeFontPadding="false"
android:text="U"
android:textColor="@android:color/black"
android:textSize="@dimen/_70sdp" />
</LinearLayout>
テキストサイズにはdbを使用できますが、テキストサイズにはsspを使用します。
詳細については、ライブラリのGitHubページを確認してください。
dpとピクセルの比率は画面密度に応じて変化しますが、必ずしも直接の比率である必要はありません。
注:コンパイラーは「dip」と「dp」の両方を受け入れますが、「dp 」は「 sp 」とより一貫性があります。
スケールに依存しないピクセル-これはdp単位に似ていますが、ユーザーのフォントサイズの設定によってもスケーリングされます。
PX(ピクセル) —画面上の実際のピクセルに対応します。
in(インチ) —画面の物理的なサイズに基づきます。
mm(ミリメートル) —画面の物理的なサイズに基づきます。
pt(ポイント) —画面の物理的なサイズに基づく1/72インチ。
ここに、画面ピクセルの計算のための隠された式と、アプリケーションUIのスマートなヒントがあります。dp単位から画面ピクセルへの変換は簡単ですpx = dp * (dpi / 160)
。たとえば、240 dpiの画面では、1dpは1.5物理ピクセルに相当します。アプリケーションのUIを定義するときは、密度の異なる画面でUIが適切に表示されるように、常にdp単位を使用する必要があります。
px =は、ピクセル計算用の画面上のピクセルを意味しますpx = dp *(dpi / 160)を使用できますdip=dpに等しい密度に依存しないピクセルsp=テキストにのみ使用する必要があります
px -1ピクセル画面上の実際のピクセルに対応します。ピクセルは、画面に表示される画像の制御可能な最小要素です。
sp-スケールに依存しないピクセルこれはdp単位のようなものです。ユーザーのフォントサイズ設定によってスケーリングされます。フォントサイズを指定するために使用されます。これは、ユーザーの好みに基づいてユーザー画面のフォントを調整するために使用できます。
dp-密度に依存しないピクセル画面の物理的な密度に基づく抽象的な単位。これらの単位は160dpi画面を基準にしているため、1dpは160dpi画面の1ピクセルです。dpとピクセルの比率は画面密度に応じて変化しますが、必ずしも直接の比率である必要はありません。
dipはdpと同じです。
を使用sp/dp
すると、Androidアプリケーションが複数の画面密度と解像度に対応できるようになります。