4

EclipseのAVDで、密度値を除いて同一の2つのデバイスを作成しました。デバイス1のはabstracted LCD density240です。デバイス2には160があります。両方の解像度は480x800です。

デバイス1の画面上の要素が「大きく」見える理由を誰かに説明してもらえますか?それらは同じ解像度を持っているので、それらは同じピクセル数を表示するべきではありませんか?どちらかといえば、デバイス1の方が密度が高いので、詳細や画面のスペースを表示するべきではないでしょうか。

デバイス1

Device_1_Screenshot

デバイス2

Device_2_Screenshot

Screeshots-(クリックすると大きなバリエーションが表示されます)

上に示したように、両方のデバイスのランダムな画面位置に半径15dpの円を描いています。アクションバーと同様に、デバイス2では円は間違いなく小さくなっています。どうしてこれなの?

4

1 に答える 1

8

物理ピクセルではなくdpで描画しています。dpは、物理サイズから抽象化して、同じ物理サイズの GUI 要素をユーザーに提供しようとします。そのため、1 つのデバイスのピクセルが小さい場合、ピクセルが大きいデバイスと同じ効果を得るには、より多くの物理ピクセルを使用する必要があります。

したがって: 800 ピクセル / 1 インチあたり 240 ピクセル = 3 1/3 インチ (その画面寸法の物理的な長さ)。1 ピクセルのサイズ: 1 ピクセル / 1 インチあたり 240 ピクセル = 0,004 インチ。800 ピクセル / 1 インチあたり 160 ピクセル = 5 インチ。1 ピクセルのサイズ: 1 ピクセル / 1 インチあたり 160 ピクセル = 0,006 インチ。

したがって、同じ解像度 (ピクセル数) では、低密度デバイスのピクセルは大幅に大きくなります (各次元で約 50% 大きくなります)。したがって、15 dp で円を表示するには、円を描画するために必要な物理ピクセルが少なくて済みます。

簡単に言うと、dpiが低いということは、ピクセルが大きいことを意味します。同じ解像度 (ピクセル数) は、低 dpi デバイスの画面が大きいことを意味します。

したがって、物理デバイスでは、これらの円は、サイズが異なるデバイスでも同じ物理サイズになります。ただし、速度上の理由から、エミュレーター ウィンドウのサイズは同じです。1 つの物理ピクセルがコンピューター画面上の 1 つの物理ピクセルにマップされます。したがって、低 dpi デバイスで使用するピクセルは少なくなりますが、同じサイズの物理ピクセルでペイントします。解決策: エミュレータ ウィンドウのサイズを変更して、実際のサイズと一致させる必要があります。Android SDK のインストールにアクセスできないだけですが、IIRC では、AVD 起動オプションで (コンピューターの) 画面の dpi を設定できるため、サイズが自動的に設定されます。

以下は、実際のデバイスの割合を維持するためにスケーリングされた画像です。

160 dpi デバイス 240dpiのデバイス

ご覧のとおり、円はアクション バー、アイコン、ステータス バーと同じ物理サイズです。

于 2012-11-19T15:41:10.553 に答える