计算android屏幕大小?

时间:2012-08-29 07:49:26

标签: android android-layout mobile

是否可以以英寸计算android屏幕对角线尺寸。

我试过以下两种方法都不适合我的情况。

方法1:

DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int absoluteHeightInPx = displayMetrics.heightPixels;
int absoluteWidthInPx = displayMetrics.widthPixels;     
double diagonalPixels = Math.sqrt((absoluteHeightInPx * absoluteHeightInPx) + (absoluteWidthInPx * absoluteWidthInPx));
double diagonalInInches = diagonalPixels / displayMetrics.densityDpi;

方法2:

float actualHeight = absoluteHeightInPx * deviceDensity;
float actualWidth = absoluteWidthInPx * deviceDensity;
float deviceDensity = displayMetrics.density;
float physicalPixelPerInchX = displayMetrics.xdpi;
float physicalPixelPerInchY = displayMetrics.ydpi;
float heightInInches = actualHeight / physicalPixelPerInchY;
float widhtInInches = actualWidth / physicalPixelPerInchX;
double diagonalInInches = Math.sqrt((heightInInches * heightInInches) + (widhtInInches * widhtInInches));
如果我错了,你能纠正吗?

谢谢, Easwar

2 个答案:

答案 0 :(得分:7)

我使用下面的代码,它适用于我的Moto Dey。

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

    float height=metrics.heightPixels/metrics.xdpi;
    float width=metrics.widthPixels/metrics.ydpi;

    TextView tv=(TextView) findViewById(R.id.textview);
    tv.setText("The screen size is:"+FloatMath.sqrt(height*height+width*width));

实际对角线长度为3.7“,代码给出3.6979072,足够精确。根据SDK中的描述,我认为我的方法应该适用于其他设备。

答案 1 :(得分:-1)

我在8个Android设备中测试了我的两种方法。第二个几乎是准确的。

但对于少数设备而言,这并没有给出正确答案。所以我按照第二种方法得出结论。