如何确保以像素为单位的信息适用于所有屏幕尺寸?

时间:2011-09-28 08:07:38

标签: android screen pixel

我有一个包含文本图像的图库,以及一个包含图像中每个文本位置的数据库。
位置以像素表示,这就是问题:
如何确保信息适用于每个屏幕分辨率?
图像是300x400 ..

注意:数据库已在像素中包含这些值。我无法更改它们。

3 个答案:

答案 0 :(得分:3)

不要以像素为单位指定位置,而是使用dp http://developer.android.com/guide/topics/resources/more-resources.html#Dimension

阅读本文以了解如何支持多个屏幕: http://developer.android.com/guide/practices/screens_support.html

答案 1 :(得分:1)

如果您无法更改为dp值,则可以使用以下方法检查DisplayMetrics:

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

使用metrics.densityDpi可获得当前的密度。

然后为每个密度实现一个switch语句,为所有px值添加一个缩放因子,类似于:

switch (density) {
    case 120:
        scaleFactor = 0.75;
        break;

    case 160:
        scaleFactor = 1;
        break;

    case 240:
        scaleFactor = 1.5;
        break;

    case 320:
        scaleFactor = 2;
        break;

    default:
        break;
    }

答案 2 :(得分:0)

我更喜欢你遵循hdpi,ldpi和mdpi的标准尺寸。它们是480x800,320x480和240x400,并将它们放在各自的文件夹中。您当前的分辨率将使图像拉伸以适应设备。为所有具有相同名称的图像命名。 Android将负责其余部分。 :)