34

我有两个分辨率相同的安卓设备

Device1 -> 分辨率 480x800 屏幕对角线尺寸 -> 4.7 英寸

Device2 -> 分辨率 480x800 屏幕对角线尺寸 -> 4.0 英寸

如何查找设备对角线屏幕尺寸?

以编程方式检测 7 英寸和 10 英寸平板电脑

我已经使用了上面的链接,但它提供了两个设备对角线屏幕尺寸 -> 5.8

4

7 回答 7

85

尝试此代码以英寸为单位获取屏幕尺寸

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);
于 2013-10-03T10:04:21.857 回答
12

这行不通?

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-10-03T09:51:04.980 回答
8

如果您正在做我所做的事情并根据屏幕尺寸更改内容的大小,请不要忘记将屏幕尺寸乘以 scaledDensity。例如:

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 的更多信息: DisplayMetrics.scaledDensity 在 Android 中实际返回什么?

于 2017-01-05T21:42:24.863 回答
7

以上答案都没有给出正确的屏幕尺寸......但下面的方法是正确的。

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 及更高版本。

于 2019-03-25T12:30:01.053 回答
5

尝试这个:

 public static Boolean isTablet(Context context) {

    if ((context.getResources().getConfiguration().screenLayout & 
            Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE) {

      return true;
  }
    return false;
}
于 2013-10-03T09:43:23.450 回答
4
DisplayMetrics displayMetrics = context.getResources()
                    .getDisplayMetrics();

字符串 screenWidthInPix = displayMetrics.widthPixels;

字符串 screenheightInPix = displayMetrics.heightPixels;
于 2013-10-03T10:00:36.693 回答
4

毕达哥拉斯定理求 Android 手机/平板电脑屏幕的对角线尺寸,同样的原理可以应用于 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
于 2013-10-03T10:01:39.320 回答