在android应用开发中,我尝试使用以下代码来获取屏幕宽度和高度:
Display display = getWindowManager().getDefaultDisplay();
int screenWidth = display.getWidth();
int screenHeight = display.getHeight();
但是我的display
用的是NullPointerException,为什么?那么如何获取屏幕宽度和高度呢?
发布于 2011-06-29 21:04:15
如果你在一个活动的外部调用它,你需要传入上下文(或者通过其他调用获取它)。然后使用它来获取您的显示指标:
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
int width = metrics.widthPixels;
int height = metrics.heightPixels;
更新:通过API级别的17+,您可以使用getRealSize
Point displaySize = new Point();
activity.getWindowManager().getDefaultDisplay().getRealSize(displaySize);
如果需要可用窗口大小,可以使用getDecorView
从实际显示大小中减去装饰视图大小来计算可用区域:
Point displaySize = new Point();
activity.getWindowManager().getDefaultDisplay().getRealSize(displaySize);
Rect windowSize = new Rect();
ctivity.getWindow().getDecorView().getWindowVisibleDisplayFrame(windowSize);
int width = displaySize.x - Math.abs(windowSize.width());
int height = displaySize.y - Math.abs(windowSize.height());
return new Point(width, height);
getRealMetrics
也可以工作(需要API级别的17+),但我还没有尝试过:
DisplayMetrics metrics = new DisplayMetrics();
activity.GetWindowManager().getDefaultDisplay().getRealMetrics(metrics);
发布于 2013-10-17 08:52:42
在活动中,您可以调用:
int width = this.getResources().getDisplayMetrics().widthPixels;
int height = this.getResources().getDisplayMetrics().heightPixels;
当你在一个视图中时,你需要首先获取上下文:
int width = getContext().getResources().getDisplayMetrics().widthPixels;
int height = getContext().getResources().getDisplayMetrics().heightPixels;
这将适用于所有Android版本,从API 1开始可用,并且从未被弃用。
发布于 2011-06-29 20:41:26
从服务:
Display display= ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
https://stackoverflow.com/questions/6520718
复制相似问题