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;第二种情况是533;

提前致谢。

4

3 回答 3

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

这两个值之间的差异是因为通知栏的高度,即 38px 高度。

于 2012-12-06T06:58:06.777 回答
0

尝试一下。

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

模拟器或设备有不同的密度:

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

状态栏图标的高度为 25dp (mdpi)。对于所有密度,条形高度:25*(ldpi=.75, mdpi=1, hdpi=1.5, xhdpi=2) = (19px, 25px, 38px, 50px)。

我们可以使用 25dp 作为基础并将其乘以密度(向上取整)以获得任何设备上的状态栏高度:

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

最后,如果您有上下文,应用程序可以使用的维度是:

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