本问题已经有最佳答案,请猛点这里访问。
我想获取一个android屏幕的高度,如果屏幕安装了一定的高度,我该怎么做?
如果要以像素为单位显示尺寸,可以使用以下代码:
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);
那如果我想寸步难行怎么办?
@ yoshi24,编辑了我的答案...
像魅力一样工作,谢谢!
这是错误的! ,这不是px的计算,而是dip的计算。 stackoverflow.com/questions/6840904/
拿起设备,看看它们的规格,就会发现使用此代码会得到错误的结果!
有趣的是:SDK表示不赞成使用这些方法,而应将其替换为getSize(Point),但是后者至少在我的设备上导致NoSuchMethodException。我想知道这种弃用的目的是什么...
@SargeBorsch出现此错误时,您的设备正在运行什么版本的Android? getSize(Point)仅在Android 3及更高版本中。如果小于3,则需要使用旧方法。
@RevTyler 2.3.4。但是,如果要求支持Android 2.3.4以及可能无法轻松升级的其他一些流行设备,为什么将方法标记为已弃用?
@SargeBorsch已弃用并不意味着您永远不要使用它。不推荐使用意味着您仅应在必要时使用它。它已被替换,但它们保留了那些无法升级的旧设备的代码。您将执行if(android.os.Build.VERSION.SDK_INT >= 13)以确定是应使用新代码还是不建议使用的代码。
@Lukap感谢您的链接,这是正确的答案。在过去的几天里,上面的代码使我发疯。
在活动中:
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英寸屏幕?像是采用什么度量标准?
更新了答案。
凉!谢谢男人,那实际上更好!
谢谢。但是我想Context对象有一个小错误。该常量应为Context.WINDOW_SERVICE,而不是普通的WINDOW_SERVICE。
不建议使用getDefaultDisplay()的getHeight()和getWidth()。
在您的onCreate或任何其他Activity方法中,只需执行以下操作:
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();