2016-09-12 3 views
0

私はオフィシャルのドキュメントを読んだことがありますが、まだそれを理解していません!レイアウトの最小幅はこの例でどのように機能しますか?

私はAndroidで最も幅の狭いレイアウトを試して試していますが、私には分かりません。

私はこれらのレイアウトを作成しました:sw-300dp/350dp/360dp/400dp/450dp/500dp/ しかし、私のギャラクシーS7はsw-360dp layoutを使用しています。しかし360dpは、getDisplayMetrics();の番号またはGSMArenaから取得した番号のいずれかとはかけ離れています。だから、なぜギャラクシーS7は360dpを使用し、500dpを使用しないのですか?xdpiは580dpで500dpに近いからです。

電話機能テスト:サムスンギャラクシーS7

画面サイズ: 5.1"

解像度:1440x 2560(577 PPI)

DET Logcatから私は、次のスクリーン値をretrived電話の

getDisplayMetrics().densityDpi: 640 
getDisplayMetrics().xdpi: 580 
getDisplayMetrics().ydpi: 575: 
getDisplayMetrics().widthPixels: 1440 
+0

幅は1440ピクセルです。それは何dpですか? DisplayMetricsは、デバイスのピクセル対dp比を与えるでしょう。 –

+0

@FletcherJohns私はいくつのDPがあるのか​​わかりません。 – Muddz

+0

getDisplayMetrics()とは何ですか。密度ですか? –

答えて

1

S7の画面の密度は4.

です。つまり、dpあたり4ピクセルであるため、画面は1440/4 = 360dpの幅です。

私は頻繁に次のメソッドを使用します。

public static int dpToPx(int dp) { 
    return (int) (dp * Resources.getSystem().getDisplayMetrics().density); 
} 

public static int pxToDp(int px) { 
    return (int) (px/Resources.getSystem().getDisplayMetrics().density); 
} 
+0

Ahaaa!だから私はちょうどそれが最小の幅を得るために密度の数字で任意の画面の幅を分割する必要があります! – Muddz

+0

ほぼ「最小幅」の考え方は、レイアウトが360dp未満の画面では使用されないということです。たとえば、レイアウトを削除して、電話機が使用しているレイアウトを確認します。私の推測では、350dpのものを使用することになります。 –

+0

はい、sw300dpを使用します。しかし、標準のswxxxdpスキーマ/シートは、どの数値がスクリーンサイズ/モデルであるかを教えてくれるのですか?あるいは、別の電話のレイアウトごとに計算する必要がありますか? – Muddz

関連する問題