2 woshiwoxingfu woshiwoxingfu 于 2012.09.11 13:28 提问

Android:如何获得屏幕尺寸?

我创建了一些自定义元素,我想要通过程序把它们放在屏幕的右上角(像素n是距离顶部边距,像素m是距离右边边距),因此我需要得到屏幕的宽度和高度,然后确定放置的位置:

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

有人知道在Activity组件中如何得到屏幕的宽度和高度么?
谢谢。

12个回答

suannai0314
suannai0314   2012.09.11 13:47
已采纳

如果你想要以像素来显示出尺寸,你可以使用 getSize:

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

如果不是在一个组件中,你可以通过WINDOW_SERVICE获得默认值:

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

在getSize被引进之前(在API的level 13),你可以使用现在不推荐使用的getWidth和getHeight方法:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();  //不推荐使用
int height = display.getHeight();  //不推荐使用

对于你描述的用例,使用margin/padding似乎更适合。

woshiwoxingfu
woshiwoxingfu 试了下,这个可以。
5 年多之前 回复
niangzhi
niangzhi 如果你使用display.getWidth(),一定要在至少4个AndroidManifest.xml上设置你的minSdkVersion,否则在一些设备上,你可能无法得到正确的结果。
5 年多之前 回复
yizhenbeifeng
yizhenbeifeng   2012.09.11 14:05
isplay display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();
int height = display.getHeight();

这个是不被赞成使用的,你可以试试这个代码:代码的前两行让你显示出对象的指标。这个对象包含了heightPixels,widthPixels这样的字段。

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

metrics.heightPixels;
metrics.widthPixels;
mansuifengqi
mansuifengqi metrics将返回显示的尺寸,但是这会导致你的程序很混乱,相比那些由于系统的组织而返回的来说,你的activity将会有更少的空间。
5 年多之前 回复
Sueyexin
Sueyexin   2012.09.11 14:22

如果你想要把Honeycomb(非常可能)提前,你可能需要降低兼容性。像这样:

int Measuredwidth = 0;
  int Measuredheight = 0;
  Point size = new Point();
  WindowManager w = getWindowManager();

    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){
          w.getDefaultDisplay().getSize(size);

          Measuredwidth = size.x;
          Measuredheight = size.y; 
        }else{
          Display d = w.getDefaultDisplay(); 
          Measuredwidth = d.getWidth(); 
          Measuredheight = d.getHeight(); 
        }

当然,这个不被赞成的方法将会最终会被带出最近的SDK,但是我们仍然依靠大多数使用旧版本的android用户,这就是为什么我们是过时的。

zlQQhs
zlQQhs   2013.02.26 13:39
WindowManager windowManager = getWindowManager();
    Display display = windowManager.getDefaultDisplay();
    int width = display.getWidth();
    int height = display.getHeight();
jacktree365
jacktree365   2015.04.02 11:23

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

    其实android中的获取屏幕尺寸和CS架构的获取方法是一样一样的。
sxjiangdongqin
sxjiangdongqin   2015.06.09 14:13

如果你想获得屏幕的像素大小,可以使用getSize:

1
2
3
4
5

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

qazwsx132656526
qazwsx132656526   2015.08.31 20:04

如果你想要以像素来显示出尺寸,你可以使用 getSize

gary16
gary16   2016.02.03 14:47

用这种****
isplay display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();

qq_27578023
qq_27578023   2016.05.26 21:55

有两种方式:
1.
WindowManager wm = (WindowManager) getContext()
.getSystemService(Context.WINDOW_SERVICE);
int width = wm.getDefaultDisplay().getWidth();
int height = wm.getDefaultDisplay().getHeight();
2.
WindowManager wm = this.getWindowManager();
int width = wm.getDefaultDisplay().getWidth();
int height = wm.getDefaultDisplay().getHeight();

qq_35182702
qq_35182702   2016.06.13 22:38

如果你想要以像素来显示出尺寸,你可以使用 getSize:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
如果不是在一个组件中,你可以通过WINDOW_SERVICE获得默认值:

WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
在getSize被引进之前(在API的level 13),你可以使用现在不推荐使用的getWidth和getHeight方法:

Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth(); //不推荐使用
int height = display.getHeight(); //不推荐使用
对于你描述的用例,使用margin/padding似乎更适合。

希望这样 能对你有所帮助 ,hy

共12条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!