Android设计多平台(像素到dp)

时间:2015-03-02 16:46:30

标签: android tablet pixels dpi smartphone

我开发了一个带有Eclipse仿真器(5.4“)的Android应用程序。

我测试了这个应用程序,一切运行良好,但我想根据不同智能手机的尺寸和不同的平板电脑尺寸调整我的应用程序。 我创建了一些带有不同后缀的文件夹“值”,例如'-ldpi''-mdpi''-hdpi'' - xhdpi',其中包含'dimens.xml'文件,其中包含布局中每个元素的'dp'金额。

此外,我有一个pdf,其中包含我必须为每个元素使用的像素数量,但我不知道如何使用它们。我必须使用的这个设计是1280x720像素,但我不知道如何在我的应用程序中为每个'dimens.xml'文件(ldpi,mdpi,hdpi,xhdpi)调整这些数量的像素。

例如,如果设计的宽度为720像素,按钮的宽度为50像素,那么根据密度,每个“尺寸”文件中必须放入多少“dp”?

我找到了一些网络应用程序,它将dp中的金额从一个密度转换为另一个密度,但我不知道如何使像素适应dp以及我必须使用的密度如引用...

我希望你能帮助我!

谢谢xD

修改

我设法为我的智能手机获得了良好的结果是XHDPI。现在,对于模拟器是MDPI,我按照以下规则将dp(x2)放入'values-mdpi / dimens.xml'对XHPDI:

密度:

ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi

0.75 | 1 | 1.33 | 1.5 | 2 | 3 | 4

float dp = somePxValue / density;

但视觉效果不一样,不正确。 Why¿?

我一直在测试,并且在模拟器MDPI中获得与应用程序相同的方面,而不是我的智能手机XHDPI必须遵循以下关系:

dp(MDPI)= dp(XHDPI)x 1.35

有人可以向我解释为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

private int pxToDp(int px)
{
    float density = getApplicationContext().getResources().getDisplayMetrics().density;
    return Math.round((float)px / density);
}