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

Luk*_*kap 6 android screen view inches screen-size

欲望有480 x 800像素,3.7英寸,HD有480 x 800像素,4.3英寸屏幕规格.

我运行从此线程接受作为答案的代码如何获取设备的屏幕大小?但这是错误的!例如,对于3.7英寸的屏幕尺寸返回2.4,这是非常错误的!

有人知道如何获得真正的屏幕尺寸吗?我不需要分辨率我需要屏幕的屏幕尺寸(英寸).

注意:此代码错误(至少对我不起作用)

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels; //give me 320
int height = dm.heightPixels; //give me 533
Run Code Online (Sandbox Code Playgroud)

我有HTC Desire,我的分辨率是480 x 800像素!

我知道我很蠢!,显然我做错了什么但有人可以请我如何以英寸为单位获得真正的屏幕尺寸,并获得设备的真正分辨率?

谢谢

Luk*_*kap 15

好的,我终于找到了我的问题

是的,这段代码工作正常,但我没有返回像素,它返回DIP(密度无关像素),这是不一样的!

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels; //320 dip
int height = dm.heightPixels; //533 dip
Run Code Online (Sandbox Code Playgroud)

我需要的是REAL像素,它们的计算如下:

int widthPix = (int) Math.ceil(dm.widthPixels * (dm.densityDpi / 160.0));
Run Code Online (Sandbox Code Playgroud)

现在widthPix是480!


Mar*_*ver 8

我找到了你的问题,这让我想知道为什么我肯定没有在我正在开发或测试的任何设备上看到这种效果... getWidth()/ getHeight()返回可用屏幕的确切范围.我怀疑其他人也会在这里结束,添加代码会导致更多的混淆而不理解根本原因.

事实证明,如果您明确禁用预缩放,则会发生这种情况请参阅本文档的第二个要点.(谷歌快速搜索"320x533"这个术语会让很多其他人遇到过这种情况.)摆脱你的预缩放,差异应该消失(getWidth()/ getHeight()会返回实际的尺寸,而不是缩放尺寸.

平板电脑开发人员的注意事项:getWidth()/ getHeight()不会返回原始屏幕尺寸,因为底部栏(48像素左右)不是应用可以绘制的区域的一部分.您将获得可以绘制的所有内容的大小(例如,1280x752而不是横向模式下的完整1280x800).同样,没有预缩放意味着这些值是准确和精确的.

  • 有用的评论..尤其是关于平板电脑"神秘失踪"48px 10q (3认同)