4

アクティビティでは、密度に依存しないピクセルをピクセルに変換する必要があります。onCreateでこのメソッドを使用してみました

float pix = dipValue * getResources().getDisplayMetrics().density;
pixel = Math.round(pix);

別の方法を試しました

Resources r = getResources();
float pix = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 35,r.getDisplayMetrics());
value = Math.round(pix);

どちらも同じ値を生成しています。問題は方法ではなく、リソースにあると思います。マニフェストファイルに次のような変更を加える必要があります

<supports-screens android:resizeable=["true"| "false"]
              android:smallScreens=["true" | "false"]
              android:normalScreens=["true" | "false"]
              android:largeScreens=["true" | "false"]
              android:xlargeScreens=["true" | "false"]
              android:anyDensity=["true" | "false"]
              android:requiresSmallestWidthDp="integer"
              android:compatibleWidthLimitDp="integer"
              android:largestWidthLimitDp="integer"/>

私と同じような質問があります。しかし、それは私の問題を解決していません。手伝ってください。

4

2 に答える 2

5

やってみました

px = dp * (dpi / 160)

密度に依存しないピクセルは、160 dpi 画面上の 1 つの物理ピクセルに相当します。これは、「中」密度の画面に対してシステムが想定するベースライン密度です。実行時に、システムは、使用中の画面の実際の密度に基づいて、必要に応じて dp 単位のスケーリングを透過的に処理します。dp 単位から画面ピクセルへの変換は簡単です: px = dp * (dpi / 160)。たとえば、240 dpi の画面では、1 dp は 1.5 物理ピクセルに相当します。アプリケーションの UI を定義するときは、常に dp 単位を使用して、さまざまな密度の画面で UI が適切に表示されるようにする必要があります。

詳細については、このリンクを確認してください。

于 2012-05-09T08:12:35.997 に答える
4

dimen.xml に dp 値を追加して使用できます

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

それは簡単です...

于 2014-07-09T11:22:18.590 に答える