如何获得Android设备的屏幕尺寸?

Kai*_*las 30 android android-screen

我有两个具有相同分辨率的Android设备

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

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

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

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

我使用了上面的链接,但它给出了设备对角线屏幕尺寸 - > 5.8

小智 81

尝试此代码以获得屏幕尺寸英寸

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);
Run Code Online (Sandbox Code Playgroud)

  • `double wi =(double)width/dm.xdpi; double hi =(double)height/dm.ydpi;`更准确.根据DensityMetrics的文档,它给出了精确的密度,而`dm.densityDpi`只能给出某些离散值.我已经验证它可以在两个设备上运行. (9认同)
  • 没有得到确切的位置.如果屏幕尺寸为5.00英寸,则获得4.338值 (7认同)
  • 它不准确.它为我的4.7"手机返回4.3" (4认同)

Sma*_*tis 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); 
Run Code Online (Sandbox Code Playgroud)

  • 好的复制粘贴:)类似的答案http://stackoverflow.com/questions/6589101/how-to-get-screen-size-of-device (10认同)
  • 有趣,我从http://stackoverflow.com/questions/18106854/how-does-android-choose-which-small-normal-large-resource-folder?rq=1复制 (6认同)

kcg*_*kcg 6

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

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);
}
Run Code Online (Sandbox Code Playgroud)

注意:这仅适用于 API 17 及更高版本。


Niv*_*tha 5

尝试这个:

 public static Boolean isTablet(Context context) {

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

      return true;
  }
    return false;
}
Run Code Online (Sandbox Code Playgroud)


Moe*_*ngh 5

如果您正在执行我所做的操作并且根据屏幕大小更改内容的大小,请不要忘记将屏幕大小乘以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); 
Run Code Online (Sandbox Code Playgroud)

注意倒数第二行!以下是scaledDensity的更多信息: DisplayMetrics.scaledDensity在Android中实际返回了什么?


归档时间:

查看次数:

74839 次

最近记录:

6 年,8 月 前