2016-06-20 20 views
0

私はアンドロイドの初心者です。私はそのコンテンツのほとんどを動的に生成するアプリを作っています。ピクセル単位でコンテンツのサイズを設定していると、デバイス上で見た目がよく見えますが、他のデバイス(dpiが異なるため)で動作してもサイズは変わっていません。 静的に作成されたコンテンツとして自身のサイズを変更するように、dpのコンテンツのサイズを設定するにはどうすればよいですか?Androidのdpでコンテンツのサイズを動的に設定する

例 - 私のデバイスでは、ボタンのサイズを50ピクセルに設定しました。 それに応じてサイズを変更するようにサイズを設定する方法は? ありがとうございます。

+0

使用ラップコンテンツを。 –

+0

320dpiの画面で25dpのサイズを設定すると50dpiのサイズを、480dpiの画面では25dpのサイズを設定する必要がありますが、75pixelとしてサイズを設定する必要がありますか? – Kabir

答えて

0

Hereが必要です。要するに

は、使用:

/// Converts 14 dip into its equivalent px 

Resources r = getResources(); 
float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 14, r.getDisplayMetrics()); 
+0

だから、320dpiの画面で25dpのサイズを設定する場合、50dpiのサイズを設定し、480dpiの画面で25dpのサイズを設定する必要があります.75pixelとしてサイズを設定する必要がありますか? – Kabir

+0

いいえ...ちょうどdpsを指定してください...それは自動的に異なるデバイス –

0

あなたはピクセルにDPを変換するためのユーティリティ関数を追加する必要があります。

public static int pxFromDp(final Context context, final float dp) { 
     return (int)(dp * context.getResources().getDisplayMetrics().density); 
    } 
+0

に従って変換しますので、320 dpiの画面で25 dpのサイズを設定すると仮定します。サイズを50ピクセル、480 dpiに設定する必要があります画面、25 dpのサイズを設定する私は75ピクセルとしてサイズを設定する必要がありますか? – Kabir

+0

それだけのことはありません。画素をpxFromDp(25)として設定する必要があります。この機能によって50/75が自動的に計算されます。 –

+0

しかし、サイズを(25 *(int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP、1、getResources()。getDisplayMetrics())として設定しようとしましたが、正しく機能しておらず、これらはどちらも異なっていますか? – Kabir

0

表示倍率を使用してdpsからpxに変換する必要があります。

final float scale = getContext().getResources().getDisplayMetrics().density; 
int pixels = (int) (dps * scale + 0.5f); 

ピクセル値を動的に設定します。

この式は、さらに読書のために、Androidのドキュメントに記載されている次のリンクを確認してください:XMLでの高さと幅の両方で

https://developer.android.com/guide/practices/screens_support.html#screen-independence

+0

だから、320dpiの画面で25dpのサイズを設定する場合、50dpiのサイズを設定し、480dpiの画面で25dpのサイズを設定する必要があります.75pixelとしてサイズを設定する必要がありますか? – Kabir

+0

画面dpに従ってサイズを変更する必要はありません。数式のdps変数に値を渡すだけで、実行時に実際の値が自動的に計算されます。 – AmanSinghal

+0

私はサイズを(25 *(int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP、1、getResources()。getDisplayMetrics())として設定しようとしましたが、正しく機能しておらず、これらはどちらも異なっていますか? – Kabir

関連する問題