3

x dpi 、 y dpi 、画面の幅と画面の高さ、比率と密度について、グラフィカル レイアウト デザイン ビューからカスタム デバイス構成を作成する際に少し混乱しました。これは、私の REAL デバイスの構成で見つけた唯一のものです - 240 x 320 ピクセル、2.8 インチ (~143 ppi ピクセル密度) 。次の情報を取得するにはどうすればよいですか。カスタム デバイス構成の場合 -

x dpi= ?
y dpi = ?
screen width=240
screen height=320
ratios=?
density=?
screen size=2.8 inch (diagonal)

開発者ガイドによると- ここに画像の説明を入力

4

1 に答える 1

2

私も少し混乱しました。しかし、これらの機能を別のデバイスで実行すると、私はそれを手に入れ、今ではすべてが明確になりました.これがあなたにも役立つことを願っています.

    DisplayMetrics metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);

    int height = metrics.heightPixels;
    int width = metrics.widthPixels;

//注: 上記の式から値が得られます: Samsung Galaxy sIII の場合: 720 * 1280 Samsung 4g LTE タブレットの場合: 800 x 1232

したがって、両方のデバイスの高さがほぼ同じであることに驚かれることでしょう。しかし、これはそれがどのように機能するかではありません。実際の dp を取得するには、以下の関数「convertPixelsToDp」を使用する必要があります。

      public static float convertPixelsToDp(float px,Context context)
     {
        Resources resources = context.getResources();
        DisplayMetrics metrics = resources.getDisplayMetrics();
        float dp = px / (metrics.densityDpi / 160f);
        return dp;

     }

したがって、この式を使用すると、Samsung Galaxy sIII の場合は 360*640 になります。

 //To convert dp back to pixel
 public static float convertDpToPixel(float dp,Context context){
        Resources resources = context.getResources();
        DisplayMetrics metrics = resources.getDisplayMetrics();
        float px = dp * (metrics.densityDpi/160f);
        return px;
    }


    //This will give you ratio
    // For Samsung Galaxy sIII : ratio is 2 (320/160)
    float d = getApplicationContext().getResources().getDisplayMetrics().density;


    // will either be DENSITY_LOW, DENSITY_MEDIUM or DENSITY_HIGH
    //For Samsung Galaxy sIII : 320 dpi
    int dpiClassification = metrics.densityDpi;
于 2012-10-19T21:16:21.623 に答える