我有两个分辨率相同的安卓设备
设备1 -> 分辨率480x800,对角线屏幕尺寸 -> 4.7英寸
设备2 -> 分辨率480x800,对角线屏幕尺寸 -> 4.0英寸
如何找到设备的对角线屏幕尺寸?
我已经使用了上面的链接,但它给出的是两台设备的相同对角线屏幕尺寸 -> 5.8
我有两个分辨率相同的安卓设备
设备1 -> 分辨率480x800,对角线屏幕尺寸 -> 4.7英寸
设备2 -> 分辨率480x800,对角线屏幕尺寸 -> 4.0英寸
如何找到设备的对角线屏幕尺寸?
我已经使用了上面的链接,但它给出的是两台设备的相同对角线屏幕尺寸 -> 5.8
尝试使用此代码以获取屏幕尺寸(英寸)
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width=dm.widthPixels;
int height=dm.heightPixels;
double wi=(double)width/(double)dm.xdpi;
double hi=(double)height/(double)dm.ydpi;
double x = Math.pow(wi,2);
double y = Math.pow(hi,2);
double screenInches = Math.sqrt(x+y);
double wi=(double)width/dm.xdpi; double hi=(double)height/dm.ydpi;
这样做更加精确。根据 DensityMetrics 的文档,它可以给出精确的密度值,而 dm.densityDpi
只能提供某些离散的值。我已经验证过在两个设备上运行正常。 - Matthew Grivich这个行不通吗?
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);
如果您像我一样根据屏幕尺寸更改大小,请不要忘记将屏幕尺寸乘以缩放密度。例如:
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) * dm.scaledDensity;
Log.d("debug", "Screen inches : " + screenInches);
getResources().getDisplayMetrics();
来获取正确的scaledDensity值。 - jk7以上答案都没有给出正确的屏幕尺寸... 但下面的方法可以实现正确的尺寸。
private String getScreenSize() {
Point point = new Point();
((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getRealSize(point);
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
int width=point.x;
int height=point.y;
double wi=(double)width/(double)displayMetrics.xdpi;
double hi=(double)height/(double)displayMetrics.ydpi;
double x = Math.pow(wi,2);
double y = Math.pow(hi,2);
return String.valueOf(Math.round((Math.sqrt(x+y)) * 10.0) / 10.0);
}
试试这个:
public static Boolean isTablet(Context context) {
if ((context.getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE) {
return true;
}
return false;
}
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();这段代码获取了屏幕的宽度和高度信息,其中getDisplayMetrics()方法返回了一个DisplayMetrics对象,该对象包含了一些关于显示器的通用信息,如分辨率、密度等。widthPixels和heightPixels属性分别表示屏幕的宽度和高度像素值。
String screenWidthInPix = displayMetrics.widthPixels;
String screenheightInPix = displayMetrics.heightPixels;
使用毕达哥拉斯定理来计算安卓手机/平板电脑屏幕的对角线尺寸,同样的原则也可以应用于iPhone或Blackberry屏幕。
以下是另一种方法:
DisplayMetrics met = new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(met);// get display metrics object
String strSize =
new DecimalFormat("##.##").format(Math.sqrt(((met.widthPixels / met.xdpi) *
(met.widthPixels / met.xdpi)) +
((met.heightPixels / met.ydpi) * (met.heightPixels / met.ydpi))));
// using Dots per inches with width and height
getWindowManager()
需要活动实例,因此您需要编写 Activity.getWindowManager()
。 - GrIsHu