0

如何以英寸为单位检测 android 手机的屏幕尺寸?getSize 方法从像素返回尺寸,但是当适应不同的屏幕尺寸时它不起作用。有屏幕具有相同的像素尺寸但英寸更小,在这种情况下,某些视图不是在屏幕上获得所需的空间。如果无法以英寸为单位获得大小,可以使用像素大小做同样的事情吗?

4

3 回答 3

0

您将通过,,, 将像素正确转换为英寸

要获得 a 的大小,可以说多少 1pixel = x 英寸。让这个人拿一把尺子放在屏幕上,测量一条线的宽度,例如 320 像素的线。然后你会知道 320pixels = x 英寸,给定 x 320/x = 1 英寸。

或者

对于您的地图,只需让 x 像素 = y 英寸,地图将通过不同的因素垂直和水平缩放,只要您显示水平和垂直比例,人们就会对大小有一个好主意。

编辑

嘿,我有一个更好的方法来做到这一点,但是当屏幕没有填满整个显示器时它不起作用(通常在 CRT 显示器上)。只需询问该人正在使用的显示器的尺寸以及您需要的一切设备。1024x768、800x600、640x480的比例都是4/3,物理显示器的高宽也是4/3。15" 显示器上移 9",左移 12"。因此以像素为单位的高度在 9" 中均分,宽度在 12" 中均分。因此:

x_screen_resolution = 12"
y_screen_resolution = 9"

现在,对于 15" 显示器,您有了从像素到英寸的转换系数。4/3 的比例可能是一个标准,所以如果您得到显示器尺寸的英寸 Z,那么

    x*x + y*y = Z*Z ... eq1
    x/y = 4/3 .... eq2

    x = 4y/3 ...

    16yy/9 + yy = ZZ
    25yy/16 = 9ZZ/16
    yy = 9ZZ/25
    -------------
    y = 3Z/5

    We now know y solve for screen width x
    x = sqrt(ZZ-yy)
    and thus 
    x_screen_resolution = x inches
    y_screen_resolution = y inches

希望能帮助到你

于 2013-09-06T08:02:18.770 回答
0

使用以下内容:

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);
于 2013-09-06T08:02:35.330 回答
0

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

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);

希望这会帮助你。

于 2013-09-06T08:07:18.113 回答