如何获取设备的屏幕尺寸?

42

我想获取安卓屏幕的高度,如果屏幕的高度不是特定的高度,我该如何做呢?

3个回答

65

如果您想获取以像素为单位的显示尺寸,可以使用以下代码:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();
int height = display.getHeight();
然后,您可以添加条件来比较高度以满足您的需求。
以英寸为单位:
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
double x = Math.pow(dm.widthPixels/dm.xdpi,2);
double y = Math.pow(dm.heightPixels/dm.ydpi,2);
double screenInches = Math.sqrt(x+y);
Log.d("debug","Screen inches : " + screenInches);

2
这是错误的!!! 这不是px的计算,而是dip的计算。https://dev59.com/vlnUa4cB1Zd3GeqPcaW5#6841335 - Lukap
1
查看设备规格,你会发现使用这段代码会得到错误的结果! - Lukap
@SargeBorsch 当您遇到此错误时,您的设备运行的是哪个版本的Android?getSize(Point)仅适用于Android 3及以上版本。对于低于3的任何版本,您需要使用旧方法。 - Rev Tyler
1
@SargeBorsch Deprecated并不意味着你永远不应该使用它。Deprecated的意思是只有在必要时才应该使用它。它已经被替换了,但他们保留了代码以供无法升级的旧设备使用。您可以使用if(android.os.Build.VERSION.SDK_INT >= 13)来确定是否应该使用新代码或弃用的代码。 - Rev Tyler
@Lukap谢谢你的链接,那是正确的答案。上面的代码让我疯了几天。 - NightFury
显示剩余3条评论

22

从Activity内部:

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

或者如果你只有Context对象:

WindowManager windowManager = (WindowManager)mContext.getSystemService(WINDOW_SERVICE);
int width = windowManager.getDefaultDisplay().getWidth();
int height = windowManager.getDefaultDisplay().getHeight()
更新。如何检测您的应用程序在大屏幕上运行:
//Android Level 9 and up:
Configuration config = getResources().getConfiguration();
if((config.screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) ==  
    Configuration.SCREENLAYOUT_SIZE_XLARGE) 
{
    //xlarge screen
}

好的,谢谢!那么我该如何将它与10.2英寸的屏幕进行比较呢?它是按照什么指标来衡量的? - yoshi24
太酷了!谢谢,伙计,这真的更好! - yoshi24
1
谢谢。但我想 'Context' 对象中有一个小错误。常量应该是 'Context.WINDOW_SERVICE' 而不是简单的 'WINDOW_SERVICE'。 - milkersarac
1
getDefaultDisplay()的getHeight()和getWidth()已经被弃用。 - MojioMS

0
在您的 onCreate 或任何其他 Activity 方法中,只需执行以下操作:
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth(); 
int height = display.getHeight();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接