当前位置: 首页 > 知识库问答 >
问题:

为什么它总是给屏幕英寸大小错误?

易炳
2023-03-14

我想按英寸计算设备大小。我使用的是每次搜索都会出现的代码。但问题是,当我把设备放在4.5英寸时,我在android studio中的答案是4英寸。我尝试了5.2英寸的设备,得到了4.3英寸和10.1英寸-

 DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);

    double wi=(double)dm.widthPixels/dm.xdpi;
    double hi=(double)dm.heightPixels/dm.ydpi;
    double x = Math.pow(wi,2);
    double y = Math.pow(hi,2);
    double screenInches = Math.sqrt(x+y);
    Log.e("hello"," "+screenInches);

共有3个答案

孙泳
2023-03-14

设备大小与屏幕大小不同,因为屏幕不会覆盖设备的总大小

Android操作系统与设备尺寸无关,您无法以编程方式获取设备尺寸,您只能获得屏幕尺寸

郑正文
2023-03-14

您可以使用getResources()。getDisplayMetrics()

DisplayMetrics:描述有关显示器的一般信息的结构,例如其大小、密度和字体缩放。

DisplayMetrics metrics = getResources().getDisplayMetrics();

    int width = metrics.widthPixels;
    int height = metrics.heightPixels;
    int dens = metrics.densityDpi;
    double wi = (double)width / (double)dens;
    double hi = (double)height / (double)dens;
    double x = Math.pow(wi, 2);
    double y = Math.pow(hi, 2);
    double screenInches = Math.sqrt(x+y);

    System.out.println("getSIZE"+screenInches);

有关更多信息,请访问Android DisplayMetrics返回不正确的屏幕大小。

裘安阳
2023-03-14

你的代码的问题是它没有考虑到

Actionbar

软键

屏幕的方向

使用以下答案

 WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
DisplayMetrics displayMetrics = new DisplayMetrics();
display.getMetrics(displayMetrics);

// since SDK_INT = 1;
mWidthPixels = displayMetrics.widthPixels;
mHeightPixels = displayMetrics.heightPixels;

// includes window decorations (statusbar bar/menu bar)
if (Build.VERSION.SDK_INT >= 14 && Build.VERSION.SDK_INT < 17)
{
    try
    {
        mWidthPixels = (Integer) Display.class.getMethod("getRawWidth").invoke(display);
        mHeightPixels = (Integer) Display.class.getMethod("getRawHeight").invoke(display);
    }
    catch (Exception ignored)
    {
    }
}

// includes window decorations (statusbar bar/menu bar)
if (Build.VERSION.SDK_INT >= 17)
{
    try
    {
        Point realSize = new Point();
        Display.class.getMethod("getRealSize", Point.class).invoke(display, realSize);
        mWidthPixels = realSize.x;
        mHeightPixels = realSize.y;
    }
    catch (Exception ignored)
    {
    }


 DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
double x = Math.pow(mWidthPixels/dm.xdpi,2);
double y = Math.pow(mHeightPixels/dm.ydpi,2);
double screenInches = Math.sqrt(x+y);
Log.d("debug","Screen inches : " + screenInches);

归功于他

 类似资料:
  • 我参考了更多的文件,也遇到了这篇和许多似乎是我的问题的帖子。但我想在这里得到更具体的建议或答案。 问题是,我已经为5英寸手机(比如nexus 4)开发了主屏幕,所以它看起来很好。当我在4英寸手机(比如nexus s)上运行相同的应用程序时,主屏幕看起来不像5年前那样“手机。这太奇怪了,有些按钮和视图没有安装。我现在该怎么办?我还尝试创建一个单独的布局文件夹,如layout-320dp和layout

  • 问题内容: 嗨,我正在编写图形程序,我一直在寻找一种获取所使用屏幕物理尺寸的方法。我可以获得以像素为单位的屏幕大小以及逻辑分辨率。我似乎找不到任何地方可以获取任何显示器规格中始终具有的物理尺寸(例如19“-376 x 301 mm)。问题是,加载此信息时,此信息是否甚至还存储在OS中的任何位置?我正在编写的程序需要在Mac和Windows上运行。 谢谢! nt 问题答案: 我认为Java不可能实现

  • 我最初使用的是setSize,但由于java边框和标题空间的原因,这导致屏幕上的内容比屏幕稍大。所以我使用了setpreferredSize,现在屏幕尺寸有点太大了。在我的内容的右侧和底部留出空间。 在我的框架中: 在我的董事会(JPanel)

  • 初学者问题,很抱歉,如果这不是一个合适的地方,请尝试学习在中逻辑是如何工作的,我无法理解这一点 我希望它会说“是的!”如果是A、A、D或D,而是z,但出于某种原因,它会说“是的!”无论第一个符号是什么,都会断开,并且只检查第二个符号是否为z。

  • 问题内容: 我已经仔细阅读了http://developer.android.com/guide/practices/screens_support.html和其他相关网站中的文档,但我仍然对此表示怀疑。让我解释: 我已经为值,values-large和values- xlarge实现了dimens.xml,因此,例如,在平板电脑上运行时,我的Android应用程序很好。但是,我指定了填充,边距,