在 Android 中检查屏幕大小的简单方法是什么?

What's an easy way to check the screen size in Android?

我需要能够在 Android 上为手机提供与平板电脑不同的 UI。但我一直在寻找一种简单、直接的方法来运行时检查屏幕尺寸/分辨率。我已经搜索了很多,我得到的所有答案要么告诉我屏幕密度,这不是我想要的,要么属于"使用 dp"或"将不同的图像放入可绘制文件夹。"这些都不能完全满足我的需要。我在 StackOverflow 上看到的所有答案要么属于上述类别,要么给出了已弃用的解决方案的答案。

我认为我有一个可行的解决方案:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Configuration configuration = getResources().getConfiguration();
boolean bigScreen = configuration.screenLayout == configuration.SCREENLAYOUT_SIZE_LARGE
    || configuration.screenLayout == configuration.SCREENLAYOUT_SIZE_XLARGE;

if(bigScreen)
{
    Intent userCreationIntent = new Intent(getApplicationContext(), AboutUs.class);
    startActivityForResult(userCreationIntent, 0);
}
else
{
    Intent userCreationIntent = new Intent(getApplicationContext(),AboutUsSmall.class);
    startActivityForResult(userCreationIntent,0);
}

问题在于,这段代码还将我的 7 英寸平板电脑 Nexus 7 发送到 AboutUsSmall 布局/类。

我做错了什么?更重要的是,我怎样才能做到这一点?


改成:

1
2
3
4
5
public static boolean isLargeScreen(Context context)
{
    return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK)
            >= Configuration.SCREENLAYOUT_SIZE_LARGE;
}

这对于 Nexus 7 将返回 true。将 SCREENLAYOUT_SIZE_XLARGE 更改为 SCREENLAYOUT_SIZE_LARGE


我猜您有很好的理由避免针对不同屏幕尺寸使用 android 标准。我相信 Arash 有更清洁的解决方案,但这是另一个可能更好地回答您在标题中提出的问题的解决方案:

1
2
3
4
5
6
7
DisplayMetrics dm = getResources().getDisplayMetrics();

double density = dm.density * 160;
double x = Math.pow(dm.widthPixels / density, 2);
double y = Math.pow(dm.heightPixels / density, 2);
double screenInches = Math.sqrt(x + y);
log.info("inches: {}", screenInches);

这个和这篇文章很好地解释了它。祝你好运!


对于不同的屏幕尺寸,以下是应用程序中的资源目录列表,该应用程序为不同的屏幕尺寸提供不同的布局设计,并为小、中、高和超高密度屏幕提供不同的位图可绘制对象。您可以在 res 文件夹中使用不同大小的布局文件,也可以根据密度对可绘制图像有所不同..

1
2
3
4
5
res/layout/my_layout.xml             // layout for normal screen size ("default")
  res/layout-small/my_layout.xml       // layout for small screen size
  res/layout-large/my_layout.xml       // layout for large screen size
  res/layout-xlarge/my_layout.xml      // layout for extra large screen size
  res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation

Android 会自动打开与屏幕尺寸相对应的特定布局。
您可以在此处查看有关多屏的开发人员网站