Androidの測定単位の違いは何ですか?
- px
- 浸漬
- dp
- sp
Androidの測定単位の違いは何ですか?
回答:
px
ピクセル -画面上の実際のピクセルに対応します。
インチ -画面の物理的なサイズに基づいて。
1インチ= 2.54センチ
mm
ミリメートル -画面の物理的なサイズに基づきます。
pt
ポイント -画面の物理的なサイズに基づく1/72インチ。
dpまたはdip
密度に依存しないピクセル-画面の物理密度に基づく抽象的な単位。これらの単位は160 dpi画面を基準にしているため、1 dpは160 dpi画面上の1ピクセルです。dpとピクセルの比率は画面密度によって変化しますが、必ずしも正比例ではありません。注:コンパイラーは「dip」と「dp」の両方を受け入れますが、「dp」は「sp」とより一貫しています。
sp
スケールに依存しないピクセル-これはdpユニットに似ていますが、ユーザーのフォントサイズ設定によってもスケールされます。フォントサイズを指定する場合は、この単位を使用することをお勧めします。これにより、画面の密度とユーザーの好みの両方に合わせて調整されます。
+----------------+----------------+---------------+-------------------------------+
| Density Bucket | Screen Density | 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 |
+----------------+----------------+---------------+-------------------------------+
+---------+-------------+---------------+-------------+--------------------+
| Unit | Description | Units Per | Density | Same Physical Size |
| | | Physical Inch | Independent | On Every Screen |
+---------+-------------+---------------+-------------+--------------------+
| px | Pixels | Varies | No | No |
+---------+-------------+---------------+-------------+--------------------+
| in | Inches | 1 | Yes | Yes |
+---------+-------------+---------------+-------------+--------------------+
| mm | Millimeters | 25.4 | Yes | Yes |
+---------+-------------+---------------+-------------+--------------------+
| pt | Points | 72 | Yes | Yes |
+---------+-------------+---------------+-------------+--------------------+
| dp | Density | ~160 | Yes | No |
| | Independent | | | |
| | Pixels | | | |
+---------+-------------+---------------+-------------+--------------------+
| sp | Scale | ~160 | Yes | No |
| | Independent | | | |
| | Pixels | | | |
+---------+-------------+---------------+-------------+--------------------+
詳細については、Googleデザインドキュメントもご覧ください。
dp
は、物理的に同じ長さではありません。(近いですが。)バケットに関する@Fraggleのコメントを参照してください。つまり、48 dpは約8 mm(0.3インチ)ですが、最大11 mmまで変動する可能性があります。
これに関するほとんどすべて、およびさまざまなサイズと密度の複数の画面に最適なサポートを実現する方法は、次のように詳しく説明されています。
画面サイズ
実際の物理的なサイズ。画面の対角線として測定されます。簡単にするために、Androidは実際のすべての画面サイズを4つの一般的なサイズ(小、標準、大、特大)にグループ化します。画面密度
物理領域内のピクセル数。通常はdpi(ドット/インチ)と呼ばれます。たとえば、「低」密度の画面では、「通常」または「高」密度の画面と比較して、特定の物理領域内のピクセル数が少なくなります。単純化のために、Androidは実際のすべての画面密度を6つの一般化された密度にグループ化します:低、中、高、超高、超超、超超高。オリエンテーション
ユーザーの視点から見た画面の向き。これは、横長または縦長のどちらかです。つまり、画面のアスペクト比は、それぞれ横または縦になります。さまざまなデバイスがデフォルトでさまざまな向きで動作するだけでなく、ユーザーがデバイスを回転させると、実行時に向きが変わる可能性があることに注意してください。解像度
画面上の物理ピクセルの総数。複数の画面のサポートを追加する場合、アプリケーションは解像度で直接動作しません。アプリケーションは、一般化されたサイズと密度のグループで指定されているように、画面のサイズと密度のみに関係する必要があります。密度非依存ピクセル(dp)
UIレイアウトを定義するときに使用する仮想ピクセルユニットで、レイアウトの大きさや位置を密度に依存しない方法で表現します。密度に依存しないピクセルは、160 dpi画面上の1つの物理ピクセルに相当します。これは、「中」の密度の画面用にシステムが想定するベースライン密度です。実行時に、システムは使用中の画面の実際の密度に基づいて、必要に応じてdp単位のスケーリングを透過的に処理します。dp単位からスクリーンピクセルへの変換は簡単ですpx = dp * (dpi / 160)
。たとえば、240 dpiの画面では、1 dpは1.5物理ピクセルに相当します。アプリケーションのUIを定義するときは、常にdpユニットを使用して、異なる密度の画面でUIが適切に表示されるようにする必要があります。
複数の種類のデバイス用の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-密度非依存ピクセル -画面の物理密度に基づく抽象的な単位。これらの単位は160 dpiの画面を基準にしているため、1つdp
は160 dpiの画面の1ピクセルです。dpとピクセルの比率は画面密度によって変化しますが、必ずしも正比例ではありません。注:コンパイラは、両方を受け入れdip
及びdp
ものの、dp
とより一致していますsp
。
sp-スケールに依存しないピクセル -これはdp
単位に似ていますが、ユーザーのフォントサイズ設定によってもスケーリングされます。フォントサイズを指定するときは、この単位を使用することをお勧めします。これにより、フォントサイズが画面密度とユーザーの好みの両方に合わせて調整されます。
同じサイズで2つの画面の例を考えてみます。1つは画面密度が160 dpi(1インチあたりのドット数、つまり1インチあたりのピクセル数)で、もう1つは240 dpiです。
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(ドット/インチ)と呼ばれます。たとえば、「低」密度の画面は、「通常」または「高」密度の画面と比較して、特定の物理領域内のピクセルが少なくなります。簡単にするために、Androidは実際のすべての画面密度を4つの一般化された密度(低、中、高、超高)にグループ化します。
オリエンテーション:
ユーザーの視点から見た画面の向き。これは、横長または縦長のどちらかです。つまり、画面のアスペクト比は、それぞれ横または縦になります。さまざまなデバイスがデフォルトでさまざまな向きで動作するだけでなく、ユーザーがデバイスを回転させると、実行時に向きが変わる可能性があることに注意してください。
解決:
画面上の物理ピクセルの総数。複数の画面のサポートを追加する場合、アプリケーションは解像度で直接動作しません。アプリケーションは、一般化されたサイズと密度のグループで指定されているように、画面のサイズと密度のみに関係する必要があります。
密度非依存ピクセル(dp):
UIレイアウトを定義するときに使用する仮想ピクセルユニット。レイアウトのサイズや位置を密度に依存しない方法で表現します。密度に依存しないピクセルは、160 dpi画面上の1つの物理ピクセルに相当します。これは、「中」の密度の画面用にシステムが想定するベースライン密度です。実行時に、システムは使用中の画面の実際の密度に基づいて、必要に応じてdp単位のスケーリングを透過的に処理します。画面のピクセルへのdp単位の変換は簡単です:px = dp *(dpi / 160)。たとえば、240 dpiの画面では、1 dpは1.5物理ピクセルに相当します。アプリケーションのUIを定義するときは、常にdpユニットを使用して、異なる密度の画面でUIが適切に表示されるようにする必要があります。
リファレンス:Android開発者サイト
dp
です dip
。すべて(マージン、パディングなど)に使用します。
sp
{text-size}にのみ使用してください。
違いを参照してくださいpx
、dp
とsp
さまざまな画面サイズにします。
pxまたはdotは、物理画面上のピクセルです。
dpiは、物理画面上の1インチあたりのピクセル数で、ディスプレイの密度を表します。
Androidはいくつかの密度にエイリアス名を与えます
dipまたはdpは、密度に依存しないピクセルです。つまり、物理密度に応じて、ピクセル数は増減します。
spまたはsipは、スケールに依存しないピクセルです。> で[ 大きなテキスト ]オプションがオンになっている場合、SettingsAccessibility
テキストサイズにはspを使用します。
それ以外の場合はdpを使用します。
これらは、XMLで定義されたディメンション値です。ディメンションは、数値とそれに続く測定単位で指定されます。例:10px、2in、5sp。Androidでは、次の測定単位がサポートされています。
dp
密度非依存ピクセル-画面の物理密度に基づく抽象的な単位。これらの単位は、160 dpi(1インチあたりのドット数)の画面を基準にしています。この画面では、1 dpは1 pxとほぼ同じです。より高密度の画面で実行する場合、1 dpの描画に使用されるピクセル数は、画面のdpiに適した係数で拡大されます。同様に、密度の低い画面では、1 dpに使用されるピクセル数が縮小されます。dpとピクセルの比率は画面密度によって変化しますが、必ずしも正比例ではありません。(px単位の代わりに)dp単位を使用すると、レイアウトのビューの寸法をさまざまな画面密度に合わせて適切にサイズ変更する簡単なソリューションになります。つまり、さまざまなデバイスでのUI要素の実際のサイズに一貫性を提供します。
sp
スケールに依存しないピクセル-これはdpユニットに似ていますが、ユーザーのフォントサイズ設定によってもスケールされます。フォントサイズを指定するときは、この単位を使用することをお勧めします。これにより、フォントサイズが画面密度とユーザーの好みの両方に対して調整されます。
pt
ポイント-画面の物理的なサイズに基づく1/72インチ。
px
ピクセル-画面上の実際のピクセルに対応します。実際の表現はデバイスによって異なるため、この測定単位はお勧めできません。デバイスごとに1インチあたりのピクセル数が異なり、画面上で利用可能な総ピクセル数が増減する場合があります。
んん
ミリメートル-画面の物理的なサイズに基づきます。
に
インチ-画面の物理的なサイズに基づきます。
注:ディメンションは、(XMLファイルの名前ではなく)name属性で指定された値を使用して参照される単純なリソースです。そのため、1つの要素の下にある1つのXMLファイルで、ディメンションリソースを他の単純なリソースと組み合わせることができます。
基本的に、pxが適用されるのは1 pxだけです。これは、ディバイダーの場合のように、画面上に正確に1ピクセルが必要な場合です。
160 dpiを超えると、2〜3ピクセルになる場合があります。
> 120 dpiでは、0に丸められます。
px
ピクセル-画面上の実際のピクセルに対応します。
dpまたはdip
密度非依存ピクセル-画面の物理密度に基づく抽象的な単位。これらの単位は160 dpi画面を基準にしているため、1 dpは160 dpi画面上の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の画面では、1 dpは1.5物理ピクセルに相当します。アプリケーションのUIを定義するときは、dpユニットを常に使用して、異なる密度の画面でUIが適切に表示されるようにする必要があります。
ピクセルと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分割線。pxは、1ピクセルの線を画面解像度全体の仕切りとして指定する場合に適しています。
フォントサイズにはspを使用します。次に、デバイスのフォントサイズが変更される間、アプリケーション内のフォントのみが変更されます(つまり、[表示]-> [デバイスのフォント])。アプリ内に静的なサイズのフォントを保持したい場合は、フォントサイズをdpで指定できます。そのような場合、それは決して変わることはありません。開発者は、特定の画面でこのような要件を取得する場合があります。そのため、開発者はspではなくdpを使用できます。それ以外の場合は、spをお勧めします。
下の画像px
との違いを確認dp
できます。また、px
とdp
が異なる画面で同じ物理サイズを保証できないこともわかります。
テキストのサイズと外観に関連するものは、sp
またはを使用する必要がありますpt
。一方、コントロールのサイズ、レイアウトなどに関連するものはすべて、で使用する必要がありますdp
。
両方dp
とdip
その場所で使用できます。
私はdpのみを使用します。
フォントサイズに "sp"を使用することについては多くの話があり、私はその点を評価しますが、デザインの観点から行うのは正しいことだとは思いません。ユーザーが不自然なフォントサイズを選択している場合、デザインが壊れてしまう可能性があり、ユーザーはアプリを非難することになります自分の人生の選択ではなくます。
また、160 dpiのタブレットでsp-fontアプリを使用すると、すべてが拡大するますが、フォントは比較小さく見えます。見た目が良くない。
「sp」フォントのアイデアは良い心を持っていますが、それは貧弱なアイデアです。すべてにdpを使用します。
sp
はファクターですよね?影響dp
するものはすべて影響しsp
ます。とdp
はsp
いえ、レイアウトが非常にタイトで大きなサイズが収まらない場合は、を使用してフォントサイズを指定することをお勧めします。完全にめちゃくちゃになっているレイアウトよりもユーザーが望むテキストよりも小さいテキストを使用することをお勧めします。ただし、最初のインスタンスでは、常にユーザーのフォントサイズ設定を尊重するように努める必要があります。最大の設定でもそれほど大きくはありません。
sp =スケールに依存しないピクセル
dp = dip =密度に依存しないピクセル
dpi =インチあたりのドット数
spの使用は避けるべきです。
複数の画面をサポートするには、dpを使用する必要があります。
Androidはさまざまな画面解像度をサポートしています
120 dp ldpiデバイスには、1インチのサイズで120ピクセルがあります。
他の密度でも同じ...
ソフトウェアエンジニアは、次の変換式を使用する必要があります。
ピクセル= dp *(密度/ 160)
したがって、240 dpiのデバイスの1 dpは= 1 *(240/160)= 3/2 = 1.5ピクセルになります。
また、480 dpiのデバイスの1 dpは、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-ポイント
インチ-物理画面サイズ(1インチ= 2.54 cm)
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で使用されている式は次のとおりです。
px = dp *(dpi / 160)
ここで、dpiは次の画面密度のいずれかです。すべての可能な密度のリストについては、こちらをご覧ください
「DENSITY_ *」定数を定義します。
ここから撮影。
これは、画面のdpiがわかっている場合、pxとdpの間で変換するときに多くの混乱を解決します。
したがって、hdpi画面に60 dpの画像が必要だとすると、60 dpの物理ピクセルサイズは次のようになります。
px = 60 * (240 / 160)
画面サイズでは、Android
カテゴリに分類されsmall
、medium
、large
、extra large
、double-extra
とtriple-extra
。画面密度は、画面の領域(インチなど)内のピクセルの量です。通常、インチあたりのドット数(dpi)で測定されます。画面密度は、低、中、高、および超高としてグループ化されています。解像度は、画面内のピクセルの総数です。
単位間の変換式
px = dp * (dpi / 160)
デバイスのdpからpxへ
次の例は、理解を深めるのに役立ちます。120(ldpi)、160(mdpi)、240(hdpi)、320(xhdpi)、480(xxhdpi)、640(xxxhdpi)のバケットサイズに基づいてスケーリングが行われます。Googleが推奨する設計比率は、3:4:6:8:12で、ldpi:mdpi:hdpi:xhdpi:xxhdpiの場合
150px X 150pxの画像が占める
- mdpiの150 dp X 150 dp画面スペース
- hdpiの100 dp X 100 dp画面スペース
- xhdpiの75 dp X 75 dp画面スペース
すべての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/
コミュニティwikiからの回答を読んでください。上記の回答に加えて考慮すべきいくつかの情報を以下に示します。ほとんどのAndroid開発者はアプリの開発中にこれを見逃しているので、これらのポイントを追加します。
sp =スケールに依存しないピクセル
dp =密度に依存しないピクセル
dpi =密度ピクセル
私は上記の答えを調べましたが、それらを正確に見つけることはできません。テキストサイズにはsp、レイアウト境界にはdp-標準。ただし、テキストサイズのspは、ほとんどのデバイスで不注意に使用すると、レイアウトが壊れます。
spはデバイスのテキストサイズを取得しますが、dpはデバイス密度標準のそれを取得します(デバイス内で変更しないでください)。
レイアウト境界にもspを使用できます。これは機能します:) 標準のアプリではテキスト全体にspを使用しません
UXを考慮して、テキストサイズにspとdpを使用します。
一部の人々は、読みやすさのために携帯電話で巨大なFONTサイズを使用し、ハードコードされたサイズの小さなテキストをUXの問題にします。必要に応じてテキストにspを付けますが、ユーザーが設定を変更したときにレイアウトが壊れないことを確認してください。
同様に、すべてのディメンションをサポートする単一のアプリがある場合、xxxhdpiアセットを追加すると、アプリのサイズが大幅に増加します。しかし、今ではxxxhdpi電話が一般的であるため、サイドバー、ツールバー、およびボトムバーのアイコンには、少なくともxxxhdpiアセットを含める必要があります。すべての画面サイズで均一で高品質の画像を取得するには、ベクター画像に移行することをお勧めします。
また、人々は自分の電話でカスタムフォントを使用していることに注意してください。そのため、フォントが不足していると、間隔などすべてに関して問題が発生する可能性があります。たとえば、カスタムフォントのテキストサイズが12spの場合、デフォルトのフォントよりも数ピクセル多くかかることがあります。
Androidの画面密度とベース密度の詳細については、Googleデベロッパーサイトを参照してください。 https://developer.android.com/training/multiscreen/screendensities
さまざまな画面解像度に合わせてAndroidアプリのUIを設計することについて良い記事を見つけました。この領域で検索している人のために、ここに残しておきたいと思います。はい、私はそれが何らかの形でGoogleドキュメントに記載されている(そして上記の投稿で言及されている)ことを知っています。私はそれを読みましたが、私にはよくありませんでした(そう、私は愚かすぎるかもしれません)。さまざまな画面サイズに対応できるレイアウトを設計する方法は、私には不明確なままでした。さまざまな画面に「柔軟な」UIレイアウトを実装する必要がある場合は、DPの概念などが嫌いです。(ちょっとiOS開発者-はい、そうです、それはストーリーボードのコンセプトです)。
Androidには悪いUIコンセプトはありませんが、残念ながらiOS Storyboard機能がありません。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は明確なAndroid UIデザインガイドを提供していませんが、dpとピクセル変換の基本的な公式を提供しています。
Androidの定義として、1pdは160 dpiデバイス(mdpi)で1pxに相当します。したがって、mdpi密度のxlarge Androidデバイス用のAndroidアプリを設計したいので、UIサイズをピクセル単位で幅960ピクセル、高さ720ピクセルとして定義できます。同じマッピングルールに従って、Androidアプリの画面サイズのUI設計ガイドラインに従ってください。
追加:「フレキシブル」UIにも興味がある場合は、次のライブラリをご覧ください。新しいサイズの単位であるsdp(スケーラブルdp)を提供するAndroid SDK。このサイズの単位は、画面サイズに合わせて調整されます(これは、SDP
ライブラリについての回答でもここに記載されています)
ADDED2 GoogleはついにiOS Storeboard UIコンセプトの有用性を理解しConstraintLayout
、Androidの世界に行きます:ConstraintLayoutでレスポンシブUIを構築する
1) dp: (density independent pixels)
dpの1単位で表されるピクセルの数は、画面の解像度が高くなるにつれて増加します(1インチあたりのドット/ピクセルが多い場合)。逆に、解像度が低いデバイスでは、dpの単位で表されるピクセル数は減少します。これは相対的な単位であるため、比較するベースラインが必要です。このベースラインは160 dpiの画面です。これは方程式です:px = dp * (dpi / 160).
2) sp: (scale independent pixels)
この単位は、画面のdpi(dpと同様)およびユーザーのフォントサイズの設定に従ってスケーリングされます。
3) px: (pixels)
画面上の実際のピクセルまたはドット。
あなたが訪問できる詳細については
画面サイズのAndroidでは、カテゴリに分類されldpi
、mdpi
、hdpi
、xhdpi
、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
ます。ANは、sp
テキストのサイズを定義するときにこの測定ユニットを使用すべきであるので、(それがスケールに依存しないピクセルの)同一の基本単位であるが、ユーザの好みのテキストサイズによってスケーリングされます
携帯電話の画面は、ピクセル(px)と呼ばれる何千もの小さなドットで構成されていますます。ピクセルは絵を作るために行く最小の要素です。絵や文言を作るためのピクセル数が多いほど、鮮明になり、スマートフォンの画面が読みやすくなります。
画面の解像度は、画面上のピクセル数で測定されます。画面解像度は、デバイスを購入するときに一般的に使用される仕様ですが、画面をピクセル数で考えると物理的なサイズの概念が無視されるため、Android向けの設計では実際にはそれほど役に立ちません。これは、タッチデバイスにとって非常に重要です。
密度非依存ピクセル(dpまたはdip)により、設計者は、ターゲットデバイスの解像度や密度に関係なく、期待どおりに表示されるアセットを作成できます。
密度に依存しないピクセル(dpまたはdip)は、ベースライン密度または160 dpi(ドット/インチ)での1ピクセルに相当します。
1 px / 1 dp = 160 dpi / 160 dpi
2 px / 1 dp = 320 dpi(2x)/ 160 dpi
どこ、
dpiは1インチあたりのドット数
したがって、320 dpiでは、1 dpは2 pxに相当します。
式
px / dp = dpi / 160dpi
1インチあたりのドット数(dpi)は、ディスプレイ画面の鮮明さ(つまり、照明される点の密度)の尺度です。同じピクセル数が異なるスペースに分散されているため、特定の画像解像度の1インチあたりのドット数は、画面全体のサイズによって異なります。
密度に依存しないピクセルを使用すると、ピクセル解像度が同じでスペースの量が異なる2つのデバイスがある場合などに対処できます。あるケースで、タブレットと電話のピクセル解像度がそれぞれ1280 x 800ピクセル(160 dpi)と800 x 1280ピクセル(320 dpi)であるとします。
タブレットはベースライン密度(160 dpi)であるため、物理および密度に依存しないピクセルサイズは1280 x 800と同じです。一方、電話のピクセル密度は高いため、密度に依存しないピクセルは物理の半分です。ピクセル。つまり、電話には400 x 640の密度に依存しないピクセルがあります。したがって、密度に依存しないピクセルを使用すると、タブレットの方が電話よりもはるかに広いスペースがあることを頭の中で簡単に想像できます。
同様に、画面サイズが似ているがピクセル密度が異なる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%の場合、16 spは16 dpとまったく同じです。ただし、デバイスのフォントサイズが大きい場合(たとえば125%)、16 spは20 dpまたは1.25倍の16に変換されます。
フォントサイズの単位としてdpを使用すると、ユーザーがデバイスのフォントサイズをカスタマイズしているかどうかに関係なく、そのテキストは特定の物理的なサイズになります。spユニットを使用すると、視力に障害のある人にとってより良い経験になります。
参考:ウダシティ、グーグル
画面のピクセル密度と解像度は、プラットフォームによって異なります。デバイスに依存しないピクセルとスケーラブルピクセルは、プラットフォーム間でデザインに対応する柔軟な方法を提供するユニットです。
1インチに収まるピクセル数は、ピクセル密度と呼ばれます。高密度画面は、低密度画面よりも1インチあたりのピクセル数が多くなります。
1インチに収まるピクセル数は、ピクセル密度と呼ばれます。高密度画面は、低密度画面よりも1インチあたりのピクセル数が多くなります。その結果、同じピクセル寸法のUI要素は、低密度の画面では大きく、高密度の画面では小さく表示されます。
画面密度を計算するには、次の方程式を使用できます。
画面密度=ピクセル単位の画面の幅(または高さ)/インチ単位の画面の幅(または高さ)
画面のピクセル密度と解像度は、プラットフォームによって異なります。デバイスに依存しないピクセルとスケーラブルピクセルは、プラットフォーム間でデザインに対応する柔軟な方法を提供するユニットです。
ピクセル密度の計算1インチに収まるピクセル数は、ピクセル密度と呼ばれます。高密度画面は、低密度画面よりも1インチあたりのピクセル数が多くなります。
密度非依存性とは、密度の異なる画面でのUI要素の均一な表示を指します。
密度非依存ピクセルは、dp(「dips」と発音します)と表記され、画面上で均一な寸法になるようにスケーリングする柔軟な単位です。マテリアルUIは、密度に依存しないピクセルを使用して、要素を異なる密度の画面に一貫して表示します。
Pixels(px) –画面上の実際のピクセルに対応します。これは、幅または高さを絶対ピクセルで指定する場合に使用されます。
密度非依存ピクセル(dpまたはdip) –画面の物理密度に基づく抽象的な単位。これらの単位は160 dpi画面を基準にしているため、1 dpは160 dpi画面上の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
1であるため、dp
ただであります1/160 inch
画面サイズや解像度が何であれ。
唯一の問題は、一部の画面のAndroid dpiが正確でないことです。たとえば、160dpiに分類された画面の場合、実際には170dpiになる可能性があります。したがって、の計算結果dp
はファジーになります。とほぼ同じになるはず1/160 inch
です。