1

Android で画面の幅と高さを取得するために、次のコードを使用する場合の違いは何ですか:

 public HorseView(Context context) {
        super(context);
    DisplayMetrics metrics = context.getResources().getDisplayMetrics();
    int height = metrics.heightPixels;
.............
}

そして、別のこれを使用します:

public void surfaceCreated(SurfaceHolder holder) {
    thread.setRunning(true);
    thread.start();
    int height = this.getHeight();
}

最初のケースで高さが 508 に設定されている理由は誰でも知っています。2 番目のケースでは 533 です。

前もって感謝します。

4

3 に答える 3

3
  • 533 * 1.5 = 800。
  • 508 * 1.5 = 762。

2 つの値の違いは、通知バーの高さが 38px であるためです。

于 2012-12-06T06:58:06.777 に答える
0

エミュレーターまたはデバイスの密度が異なります。

  • ldpi=.75、
  • mdpi=1,
  • hdpi=1.5、
  • xhdpi=2

ステータス バー アイコンの高さは 25 dp (mdpi) です。すべての密度でバーの高さ: 25*(ldpi=.75, mdpi=1, hdpi=1.5, xhdpi=2) = (19px, 25px, 38px, 50px)。

25 dp をベースとして使用し、それに密度 (切り上げ) を掛けて、任意のデバイスのステータス バーの高さを取得できます。

int statusBarHeight = (int) Math.ceil(25 * context.getResources().getDisplayMetrics().density);

最後に、コンテキストがある場合にアプリケーションが使用できるディメンションは次のとおりです。

int heightAreaWork = context.getResources().getDisplayMetrics().heightPixels - statusBarHeight;
于 2012-12-06T16:48:15.567 に答える
0

それを試してみてください。

Display display = getWindowManager().getDefaultDisplay();
     int height=display.getHeight();
              int width=display.getWidth();
于 2012-12-06T06:40:58.137 に答える