7

特定のニーズのため、私の Android レイアウトでは、サイズを指定するために「mm」を使用しました。TextView でも、サイズを「mm」で指定しました。するとtextView.getTextSize()、返されるサイズは常にピクセル値になります。そのピクセル値を「mm」に変換したい。たとえば、フォントサイズを「2mm」に設定した場合、どのデバイスでも、そうするとgetTextSize()「2mm」になります。

そのために特定の方法を使用する必要がありますか?「mm」を「pixel」に変換する答えは見つかりましたが、その逆の変換については何も見つかりませんでした。

4

5 に答える 5

11

TypedValue.javaを使用します

float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM, 1, 
                getResources().getDisplayMetrics());

  public static float applyDimension(int unit, float value,
                                       DisplayMetrics metrics)
    {
        switch (unit) {
        case COMPLEX_UNIT_PX:
            return value;
        case COMPLEX_UNIT_DIP:
            return value * metrics.density;
        case COMPLEX_UNIT_SP:
            return value * metrics.scaledDensity;
        case COMPLEX_UNIT_PT:
            return value * metrics.xdpi * (1.0f/72);
        case COMPLEX_UNIT_IN:
            return value * metrics.xdpi;
        case COMPLEX_UNIT_MM:
            return value * metrics.xdpi * (1.0f/25.4f);
        }
        return 0;
    }

だからあなたは試すことができます

Pix = mm * metrics.xdpi * (1.0f/25.4f);

MM = ピクセル / metrics.xdpi * 25.4f;

于 2013-01-28T20:04:29.657 に答える
0

Google の別のオプションを次に示します。http://developer.android.com/reference/android/util/DisplayMetrics.html

この数値を mm にスケーリングする必要があるため、25.4mm = 1 インチを使用します。

于 2013-01-28T19:56:02.520 に答える
0

このリンクで探してみてください。画面のピクセル密度を探しています。

Androidでプログラムで画面密度を取得しますか?

ここから、インチから mm への変換 (1 インチ == 25.4 mm) を使用して答えを得ることができます。

于 2013-01-28T19:52:44.323 に答える
-2
float mm = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, 1, 
            getResources().getDisplayMetrics());

applyDimesion パラメータ

于 2013-01-28T20:00:36.877 に答える