1

を使用して画面幅を見つけることができますgetWindowManager().getDefaultDisplay()dp今、ピクセル単位で取得した値から値を取得する方法を知りたいです。たとえば、次のコードを使用して画面の幅を取得したとします。

Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();

width私が得たのはピクセルですが、どうすれば に変換できますかdp

これを解決するのを手伝ってください。Androidのドキュメントで見たことがありますが、実装方法がわかりません。

4

4 に答える 4

2

dp 値をピクセルに変換する場合は、次の式を使用できます。

DisplayMetrics metrics = getWindowManager().getDefaultDisplay().getMetrics(metrics);
float logicalDensity = metrics.density;
int px = (int) (dp * logicalDensity + 0.5);

ピクセルから dp を取得するには、密度を乗算するのではなく、ピクセル値に割ります。

于 2012-04-26T11:09:09.657 に答える
2

例:フォルダーdimens.xmlに新規作成:res/values

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="dim_5dp">5dp</dimen>
</resources>

次に、アクティビティで:

int pixels = getResources().getDimensionPixelSize(R.dimen.dim_5dp);

利点は、getDimensionPixelSize()がゼロ サイズを処理し、その場合少なくとも 1 ピクセルを返すことです。

于 2012-05-12T11:34:47.300 に答える
1

実際のピクセルとdpの間で変換するには、画面のピクセル密度を使用する必要があります。これについては、Androidデベロッパーポータル/ガイドのこちらをご覧ください。見てください

于 2012-04-26T11:12:50.697 に答える