我有两个分辨率相同的Android设备
Device1 - >分辨率480x800对角线屏幕尺寸 - > 4.7英寸
Device2 - >分辨率480x800对角线屏幕尺寸 - > 4.0英寸
如何查找设备对角线屏幕尺寸?
Detect 7 inch and 10 inch tablet programmatically
我使用了上面的链接,但它同时给出了设备对角线屏幕尺寸 - > 5.8
答案 0 :(得分:80)
尝试此代码以获取屏幕尺寸(英寸)
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);
答案 1 :(得分:11)
这不起作用?
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);
答案 2 :(得分:5)
如果您正在执行我所做的操作并且根据屏幕大小更改内容的大小,请不要忘记将屏幕大小乘以scaledDensity。 e.g:
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);
注意最后一行!以下是scaledDensity内容的更多信息:What does DisplayMetrics.scaledDensity actually return in Android?
答案 3 :(得分:3)
试试这个:
public static Boolean isTablet(Context context) {
if ((context.getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE) {
return true;
}
return false;
}
答案 4 :(得分:3)
DisplayMetrics displayMetrics = context.getResources() .getDisplayMetrics(); String screenWidthInPix = displayMetrics.widthPixels; String screenheightInPix = displayMetrics.heightPixels;
答案 5 :(得分:3)
毕达哥拉斯定理找到Android手机/平板电脑屏幕的对角线尺寸,同样的主体可以应用于iPhone或黑莓屏幕。
请尝试以下方式:
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
答案 6 :(得分:0)
以上所有答案均未给出正确的屏幕尺寸...但是下面的方法正确无误。
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);
}
注意:这仅适用于API 17及更高版本。