为了确定Android应用程序使用的屏幕大小类别,我使用的是代码:
A-Z
(我找到的代码here)
但结果很奇怪......从480x800到1440x2560的密度屏幕被认为是“正常尺寸”。
平板电脑被认为是“屏幕尺寸既不大也不正常”......
我确实没有发现任何小型或大型..
还有其他方法可以对屏幕进行分类吗?我做错了吗?
答案 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();
}
答案 1 :(得分:0)
如果您使用Android 3.2或更高版本进行开发,则不推荐使用这些尺寸组。
您应该使用
您可以使用getResources().getDisplayMetrics().density
找出您当前使用的设备。 (对应于X以外的数字)
但是,密度不一定映射到屏幕大小。