web-dev-qa-db-ja.com

dp、dip、dpi、ppi、pixels、inchはどのように関係していますか?

dp、dip、px、spの測定値 を読んでいましたが、dp/dpi vs ppi vs px vs inchについてまだ質問があります。私はそれらを比較することはできません...インチが最大ですか?

彼らは160 dpiは1インチあたり160ピクセルを意味すると言います。つまり、1インチには160ピクセルが含まれますか?

また、160 dpiの画面で1ピクセル= 1 dpと言います。つまり、1ピクセルと1 dpが等しいということですか?

最後に、なぜpxの代わりにdpを使用する必要があるのですか?私はそれが理想的であることを理解していますが、なぜ

25
Chandeep

あるデバイスの300pxは、別のデバイスの300pxと必ずしも同じ量の画面領域ではないため、(ほぼ)常に、密度に依存しないピクセルであるdpのような柔軟なサイズ変更単位を使用する必要があります。最大の実用的な意味は、設計の対象となるデバイスとは異なる密度のデバイスでは、レイアウトが大きく異なることです。

  • dpまたはdipは、密度に依存しないピクセルを意味します
  • dpiまたはppiは、1インチあたりのドット(またはピクセル)を意味します
  • inchは、実際の画面サイズに関連付けられた物理的な測定値です
  • pxはピクセルを意味します—ピクセルは密度に応じて任意の量の画面領域を塗りつぶします。

たとえば、160dpi画面では1dp == 1px == 1/160inですが、240dpi画面では1dp == 1.5pxです。いいえ、1dp != 1px正確に1つのケース1dp == 1pxの場合にあり、それは160dpi画面上にあります。インチなどの物理的な測定単位は、決してデザインの一部である必要があります。つまり、定規を作成している場合を除きます。

1dpのピクセル数を決定するための簡単な式は、px = dp * (dpi / 160)です。

44
Chris Cashwell

dpはインチのような物理的測定値です。 (はい、そうです。読んでください。)

「dpは160 dpiのピクセルの物理サイズに対応します」( https://developer.Android.com/training/multiscreen/screendensities.html#TaskUseD

160 dpiでのピクセルの物理サイズは、正確に1/160インチです。したがって、dpのサイズは1/160インチです。 160 dp = 1インチ。

Pxは、画面上のやや任意の測定単位です。

さまざまなデバイスでdpがpxに変換される例については、次を参照してください。

https://stackoverflow.com/a/39495538/9840

5
user984003

Dp、dip、dpi、ppi、pixels、inchはどのように関係していますか?

Android開発の目的:

dp = dip
dpi = ppi
inch x dpi = pixels
dp = 160 x inch
dp = 160*pixels/dpi

したがって、160dpiの電話(mdpi)の場合:

2 inches = 320 dp
2 inches = 320 pixels

180 dpiの電話の場合:

2 inches = 320 dp
2 inches = 360 pixels

2インチは[〜#〜] always [〜#〜]320dpであり、画面サイズに依存しないことに注意してください。 dpは、1/160インチの物理的距離です。

Dp to pixelsの公式は興味深いです:

dp = 160*pixels/dpi

以下と同等です:

dp = pixels/(dpi/160)

dpi/160は興味深い要素です。 Androidのmdpiビンと比較した相対密度と、さまざまなリソースビンごとにグラフィックをスケーリングする必要がある量。この要素は this ページで何度か言及されていることがわかります。0.75がldpiの要素です。

4
Sam

例を使用して説明します。

_float density = context.getResources().getDisplayMetrics().density;
float px = someDpValue * density;
float dp = somePxValue / density;
_

密度が等しい

_.75 on ldpi (120 dpi)
1.0 on mdpi (160 dpi; baseline)
1.5 on hdpi (240 dpi)
2.0 on xhdpi (320 dpi)
3.0 on xxhdpi (480 dpi)
4.0 on xxxhdpi (640 dpi)
_

たとえば、

_432 dpi_( http://dpi.lv/#1920×[email protected] )のSamsung S5があります。

したがって、_density = 432/160 = phone's dpi/baseline = 2.7_

私の一番上のバーが_48dp_だとしましょう。これはbaseline (160dpi)を参照します。

したがって、私のS5でw.r.tは_48dp * 2.7_になります。

次に、実際の高さを確認したい場合:

_(48dp * 2.7) / 432 dpi = 0.3 inches_になります。

1
kalan

DPは、画面の物理サイズのみを考慮した場合の解像度です。 DPを使用すると、異なるピクセル密度を持つ他の同様のサイズの画面にレイアウトがスケーリングされます。

ただし、実際にはピクセルが必要な場合があります。コードでディメンションを処理する場合、変換しない限り、常に実際のピクセルを処理します。

0