首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何获取屏幕宽度和高度

如何获取屏幕宽度和高度
EN

Stack Overflow用户
提问于 2011-06-29 20:36:03
回答 14查看 127.2K关注 0票数 55

在android应用开发中,我尝试使用以下代码来获取屏幕宽度和高度:

代码语言:javascript
复制
Display display = getWindowManager().getDefaultDisplay(); 
int screenWidth = display.getWidth();
int screenHeight = display.getHeight();

但是我的display用的是NullPointerException,为什么?那么如何获取屏幕宽度和高度呢?

EN

回答 14

Stack Overflow用户

发布于 2011-06-29 21:04:15

如果你在一个活动的外部调用它,你需要传入上下文(或者通过其他调用获取它)。然后使用它来获取您的显示指标:

代码语言:javascript
复制
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
int width = metrics.widthPixels;
int height = metrics.heightPixels;

更新:通过API级别的17+,您可以使用getRealSize

代码语言:javascript
复制
Point displaySize = new Point();
activity.getWindowManager().getDefaultDisplay().getRealSize(displaySize);

如果需要可用窗口大小,可以使用getDecorView从实际显示大小中减去装饰视图大小来计算可用区域:

代码语言:javascript
复制
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+),但我还没有尝试过:

代码语言:javascript
复制
DisplayMetrics metrics = new DisplayMetrics();
activity.GetWindowManager().getDefaultDisplay().getRealMetrics(metrics);
票数 133
EN

Stack Overflow用户

发布于 2013-10-17 08:52:42

在活动中,您可以调用:

代码语言:javascript
复制
int width = this.getResources().getDisplayMetrics().widthPixels;
int height = this.getResources().getDisplayMetrics().heightPixels;

当你在一个视图中时,你需要首先获取上下文:

代码语言:javascript
复制
int width = getContext().getResources().getDisplayMetrics().widthPixels;
int height = getContext().getResources().getDisplayMetrics().heightPixels;

这将适用于所有Android版本,从API 1开始可用,并且从未被弃用。

票数 37
EN

Stack Overflow用户

发布于 2011-06-29 20:41:26

从服务:

代码语言:javascript
复制
Display  display= ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int width = display.getWidth(); 
int height = display.getHeight(); 
票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6520718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档