计算android屏幕大小?
是否可以计算以英寸为单位的android屏幕对角线尺寸。计算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
我已经测试了两个我在8台Android设备的方法。第二是几乎准确。
但对于一些设备,这是不给予适当的回答。所以我总结以下第二种方法。
我用下面的代码,和它的作品在我的摩托戴伊。
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中的描述,我觉得我的方法应该在其他设备上工作。
感谢,酷的方法:D –
其实你必须乘以heightPixels和widhtPixels密度的屏幕。如果密度= 1,上述推导将是正确的。我认为您的设备的密度为1.右? –
SDK文档说xdpi是X维中每英寸的物理像素数,而heightPixels是以像素为单位的绝对高度,因此将其除以xdpi应得到X维中以英寸为单位的物理长度。这就是我如何考虑你的问题。我不认为密度在这里。顺便说一句,我的设备密度为1.5 – Huang
http://stackoverflow.com/questions/2193457/IS-有-A-方式对确定功能的Android物理屏幕,他ight-in-cm-or-inches – javanut13
我已经看过链接了。但这不适合我。我在某些设备上进行了测试。我没有得到完美的答案。请帮帮我。 –
你使用什么设备? – VendettaDroid