如何确定设备屏幕尺寸类别(小,普通,大,xlarge)以测试应用程序中的不同屏幕?

时间:2017-12-29 19:45:43

标签: android android-layout

为了确定Android应用程序使用的屏幕大小类别,我使用的是代码:

A-Z

(我找到的代码here

但结果很奇怪......从480x800到1440x2560的密度屏幕被认为是“正常尺寸”。

平板电脑被认为是“屏幕尺寸既不大也不正常”......

我确实没有发现任何小型或大型..

还有其他方法可以对屏幕进行分类吗?我做错了吗?

2 个答案:

答案 0 :(得分:1)

不要混淆屏幕尺寸和密度。

例如,设备可以具有正常屏幕但高密度( hdp )( WVGA800(480x800))。

(getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK)

这里是你的屏幕尺寸。

您必须使用此代码来确定密度:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int density = metrics.densityDpi;

if (density==DisplayMetrics.DENSITY_HIGH) {
    Toast.makeText(this, "DENSITY_HIGH... Density is " + String.valueOf(density),  Toast.LENGTH_LONG).show();
} else if (density==DisplayMetrics.DENSITY_MEDIUM) {
    Toast.makeText(this, "DENSITY_MEDIUM... Density is " + String.valueOf(density),  Toast.LENGTH_LONG).show();
} else if (density==DisplayMetrics.DENSITY_LOW) {
    Toast.makeText(this, "DENSITY_LOW... Density is " + String.valueOf(density),  Toast.LENGTH_LONG).show();
} else if (density==DisplayMetrics.DENSITY_XHIGH) {
    Toast.makeText(this, "DENSITY_XHIGH... Density is " + String.valueOf(density),  Toast.LENGTH_LONG).show();
} else if (density==DisplayMetrics.DENSITY_XXHIGH) {
    Toast.makeText(this, "DENSITY_XXHIGH... Density is " + String.valueOf(density),  Toast.LENGTH_LONG).show();
} else if (density==DisplayMetrics.DENSITY_XXXHIGH) {
    Toast.makeText(this, "DENSITY_XXXHIGH... Density is " + String.valueOf(density),  Toast.LENGTH_LONG).show();
} else {
    Toast.makeText(this, "Density is neither HIGH, MEDIUM OR LOW.  Density is " + String.valueOf(density),  Toast.LENGTH_LONG).show();
}

https://developer.android.com/about/dashboards/index.html

答案 1 :(得分:0)

如果您使用Android 3.2或更高版本进行开发,则不推荐使用这些尺寸组。

您应该使用

  • ldpi 0.75x
  • mdpi 1.0x
  • hdpi 1.5x
  • xhdpi 2x
  • xxhdpi 3x
  • xxxhdpi 4x

您可以使用getResources().getDisplayMetrics().density找出您当前使用的设备。 (对应于X以外的数字)

但是,密度不一定映射到屏幕大小。