使用下一个代码在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;
提前致谢。
答案 0 :(得分:3)
两个值之间的差异是因为通知栏的高度,即38px高度。
答案 1 :(得分:0)
试试吧。
Display display = getWindowManager().getDefaultDisplay();
int height=display.getHeight();
int width=display.getWidth();
答案 2 :(得分:0)
仿真器或设备具有不同的密度:
状态栏图标的高度为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;