【问题标题】:How to set height and width in DP from PX如何从PX设置DP中的高度和宽度
【发布时间】:2014-11-11 12:51:01
【问题描述】:
我正在开发适用于安卓手机(不是平板电脑)的广泛应用的安卓应用程序。
现在设计师给我设计好的PSD文件,让我根据它来设置元素的大小。
现在在这些文件中,例如一个元素的高度和宽度为 90px,我应该在我的 android XML 布局文件上设置多少 DP?
更多 我正在为 ldpi、mdpi、hdpi 和 xdpi 创建单一布局。
我尝试http://angrytools.com/android/pixelcalc/ 计算相同,
但如果我选择 90PX,它会为 ld、md、hd 和 xd 显示不同的 DP 大小。如何在可以在各种设备上运行的单个布局文件中设置 DP 大小?
请指教,
问候,
巴文。
【问题讨论】:
标签:
android
android-layout
【解决方案1】:
但如果我选择 90PX,它会为 ld、md、hd 和
xd。如何在可以运行的单个布局文件中设置 DP 大小
各种设备?
=> 供您参考,DP 代表与密度无关的像素,这就是 PX 和 DP 之间的区别所在。
因此,如果您真的想提供对所有分辨率/密度的兼容性,那么您必须在不同的值目录下的不同dimens.xml 中声明 dp 值。
与密度无关的像素相当于 160 dpi 屏幕上的一个物理像素和 240 dpi 屏幕上的 1.5 个物理像素。这可以使用px = dp * (dpi / 160) 来计算。
声明密度值的比例为:xhdpi: 2.0, hdpi: 1.5, mdpi: 1.0 (baseline), ldpi: 0.75
标准做法:
标准做法是在不同值目录下的不同dimens.xml 中声明dp 值(在所有值目录中具有相同名称),并在需要时引用特定维度值。根据密度值,Android系统会决定自己使用特定的密度值(我的意思是dp值取自特定的dimens.xml文件)。
例如:
values/
dimens.xml
values-land/
dimens.xml
values-xlarge-land
dimens.xml
values-large
dimens.xml
【解决方案3】:
您可以保留单个 layout.xml 并为不同的设备创建多个值目录(具有不同的维度值)。
【解决方案4】:
一种方法是为不同的设备创建单个 layout.xml 和多个值目录。
另一种方法是 DP,因为你知道是密度无关像素,所以要使用 DP 计算像素的 DP 值基于一个屏幕分辨率 HDPI、XHPDI、LDPI、MDPI 等推荐(HDPI)。正如你有一个 psd 询问你的 UI 设计师哪种屏幕类型是基于计算愤怒工具的 DP 帮助并在你的布局中使用那个 DP。因为 Dp 也不完全准确 各种设备需要一些调整一些时间使用当时的价值目录。
谢谢。