屏幕宽度和高度错误

时间:2012-12-06 06:36:09

标签: android android-layout android-emulator

使用下一个代码在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;

提前致谢。

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

试试吧。

Display display = getWindowManager().getDefaultDisplay();
     int height=display.getHeight();
              int width=display.getWidth();

答案 2 :(得分:0)

仿真器或设备具有不同的密度:

  • LDPI = 0.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;