2011-01-16 3 views
6

全体的にAndroidのディップで混乱しています。デバイスに依存しないピクセルの基本

dp値のベースが160であることを私は理解しています。 したがって、80dpの幅は画面の幅の50%のビューと等しいはずですか? 私のNexus Oneでは、dpの幅は300dp程度です。

ここには何が欠けていますか?事前

答えて

5

160ドットインチ当たり。したがって、80dpはおよそ1/2インチになります。

+0

OPはdipについて質問し、dpiではありません。 – Ying

+0

彼らは関連しています。彼は160を基本値と言いました。その値はDPIの密度です。 – kcoppock

+0

あなたは正しいです - 私はこの反応を注意深く読まなかった。 – Ying

16

「DP」==「密度に依存しないピクセル」(私は「DP」このごろ使用することを好むが、これは、それが以前の「ディップ」と呼ばれた理由もある。)他のユニットのような、それの

考えます - インチ(インチ)、mm(ミリメートル)など。これは、画面の密度に基づいてスケーリングされたサイズを提供することを可能にします。

mdpiを基本濃度と定義するので、mdpi画面の "10dp"は正確に10ピクセルになります。 hdpiは1.5 * mdpiであるため、hdpi画面では15ピクセルになります。

さまざまな密度の定数はDPI(mdpiが160など)に似ていますが、密度はではなく、のDPIです。これは、画面のdpiを調整する抽象的な倍率ですが、正確に反映するようには試みません。 (実際のサイズは "in"、 "mm"などとなりますが、99.9%は "dp"に固執します)これは多くのAndroidを処理する必要がないため、デバイスはそれぞれわずかな異なる画面DPIのためにUIのスペースがわずかに異なります。また、デバイスメーカーは、希望のUIを実現するためにデバイスの密度を選択することができます。たとえば、Samsung Tabは実際のDPIよりもかなり大きな密度を使用します。その結果、UI全体が大きくなります。

+4

"これは皆の人生を大幅に簡素化します" - それ以外の人は非常に簡素化されます。ディップは機能しません(ハードウェアの多くは非常に異なるため、無駄です)。 GoogleはまだすべてのUIでdipを使用していると言いますが、それはすべての端末の30%でalighmentsが完全に間違っているため不可能です(私はここで解決策を探していました。 – Adam

0

密度に依存しないピクセル(短い:dp)は、アプリケーションの実行時に決定される仮想ピクセル単位です。

フォーマラ: 1 dp = 1 160 dpiスクリーン上のピクセル。 したがって、160dpiはシステムのベースライン密度です。

dp単位の画面ピクセルへの変換は非常に簡単です。 実際のデバイスの画素(PX)簡略化のために、DP(1)*(デバイスのDPI()/ 160(ベースライン)) を=:PX = DP *(DPI/160)

例: 場合240 dpiデバイスがアプリを起動した後、1 dpは1,5個の実際のデバイスピクセルになります。

結論: Dpは、より大きいまたはより小さいデバイスへのスケーリングを自動的に処理します。ピクセルをハードコードする時間は終わっています。 DPは、異なるスクリーン密度で適切なスケーリングを保証します。

関連する問題