以像素为单位获取屏幕尺寸

我创建了一些自定义元素,并且我想以编程方式将它们放在右上角(从顶部边缘开始n像素,从右侧边缘开始为m像素)。 因此,我需要获取屏幕宽度和屏幕高度,然后设置位置:

int px = screenWidth - m;
int py = screenHeight - n;

如何在主Activity中获取screenWidthscreenHeight


如果你想以像素为单位显示尺寸,你可以使用getSize

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

如果您不在Activity ,则可以通过WINDOW_SERVICE获取默认Display

WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();

在引入getSize之前(在API级别13中),您可以使用现在不推荐使用的getWidthgetHeight方法:

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

但是,对于您所描述的用例来说,布局中的边距/填充看起来更合适。

2015年10月22日

另一种方法是:DisplayMetrics

描述有关显示的一般信息的结构,例如其大小,密度和字体缩放。 要访问DisplayMetrics成员,请像这样初始化一个对象:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

我们可以使用widthPixels获取以下信息:

“以像素为单位的显示的绝对宽度。”

例:

Log.d("ApplicationTagName", "Display width in px is " + metrics.widthPixels);

一种方法是:

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

它已被弃用,您应该尝试下面的代码。 前两行代码为您提供了DisplayMetrics对象。 此对象包含像heightPixels,widthPixels等字段。

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

int height = metrics.heightPixels;
int width = metrics.widthPixels;

它可能不会回答你的问题,但是如果你需要一个View的维度,但是当它的布局还没有布置时,你的代码正在执行,那么知道(我是在自己找这个问题的时候,我正在寻找它) (例如在onCreate() )中,您可以使用View.getViewTreeObserver().addOnGlobalLayoutListener()来设置ViewTreeObserver.OnGlobalLayoutListenerView.getViewTreeObserver().addOnGlobalLayoutListener()需要视图维度的相关代码放在那里。 监听器的回调将在布局布局完成后调用。

链接地址: http://www.djcxy.com/p/16103.html

上一篇: Get screen dimensions in pixels

下一篇: How do you install Google frameworks (Play, Accounts, etc.) on a Genymotion virtual device?