dp - sp与PX之间的关系

19

我不是在问dp、sp和px之间的区别。

我正在设计一个基于谷歌新材料设计的网站,所有的测量都以dp(用于网格)和sp(用于文本)为单位。我的问题是它们如何转换为像素。我已经设计网站超过4年了,所有的测量(网格和字体)都是以像素为单位。

例如:

  1. 标题是24sp,相当于多少像素?(不是24px,我试图将它们匹配起来,大约是28px,但必须有一个标准的测量系统)。
  2. 网格指南:“所有组件都与8dp的方形基线网格对齐。”- 相当于多少像素?

1px = ?dp =?sp 在桌面或任何平均监视器或移动设备上?

4个回答

10

我建议阅读谷歌对dp和sp的定义,这些可以在Android文档中找到,此处此处

设计师DPI指南 中也有一些有用的信息。


1
@War10ck 谢谢。已修复。 - Rob Flaherty

6

我认为答案应该是:

在任何普通的监视器或移动设备上,1像素= 1dp = 1sp。

我是怎么得出这个结论的呢?

因为像素就是像素,在安卓系统中使用dp和sp是因为它们用于本地应用程序,必须进行缩放,并且每个屏幕的dpi都基于设备而异。对于桌面设备来说,所有这些都是相同的,当然网站必须兼容/响应移动设备,但由于网站在浏览器中加载,一些额外的媒体查询(根据指南)将完成工作。

如果有人有其他合乎逻辑的结论,请分享。


5

一个安全的估值规则是使用1px = 1dp。

这应该可以在任何设备上给你一个安全的大小。它在某些设备上会显得有点大,尤其是iPad(常规)。

原因如下:

“dp对应于160dpi下的像素物理尺寸” (https://developer.android.com/training/multiscreen/screendensities.html#TaskUseD)

160 dpi意味着:

160点 = 1英寸

因此:

160 dp = 1英寸(25.4毫米)

所以当谷歌推荐按钮具有48 dp的可触摸目标高度时,他们是在说它们需要0.3英寸(7.6毫米)高。

那么这是多少像素?好吧,这取决于设备。

48 dp(7.6毫米)按钮高度的示例:

  • iPad mini: 48 px 为什么: iPad mini屏幕约为120毫米宽,使用768个像素填充该空间。因此,您需要162个像素来占据一英寸(25.4毫米),或者使用48个像素作为您的7.6毫米按钮高度。

  • Kindle Fire (7"): 43 px

  • Kindle Fire (6"): 50 px

  • iPhone: 48 px

  • Nexus 7: 48 px

  • 常规iPad: 39 px

(我可能在四舍五入上稍微有点弄巧成拙..我喜欢48比49好!)

示例的屏幕毫米和CSS像素宽度:我使用CSS px屏幕尺寸和对角线长度计算了屏幕宽度。

  • iPad mini:1024 x 768分辨率和201毫米对角线= 120毫米宽。
  • Kindle Fire 7":858 x 533分辨率和178毫米对角线= 94毫米宽。
  • Kindle Fire 6":853 x 533分辨率和152毫米对角线= 81毫米宽。
  • iPhone:568 x 320分辨率和102毫米对角线= 50毫米宽。
  • Nexus 7:960 * 600分辨率和178毫米对角线= 94毫米宽。
  • iPad常规:1024 x 768分辨率和246毫米对角线= 148毫米宽。

请注意,计算按钮的像素高度时,您需要使用设备CSS px尺寸。这些数字不一定与规格中所述的分辨率相同。


0

对于大多数用例,它们都是大致等效的。

来源

为了在不同密度的屏幕上保留 UI 的可见大小,您必须使用密度无关像素(dp)作为测量单位来设计您的 UI。一个 dp 是一个虚拟像素单位,大约相当于中密度屏幕(160dpi;“基准”密度)上的一个像素。Android 会将此值转换为每个其他密度的实际像素数量。

例如,请考虑图1中的两个设备。如果您定义一个视图的宽度为“100px”,它在左侧的设备上会显得更大。因此,您必须使用“100dp”来确保它在两个屏幕上显示相同的大小。

然而,在定义文本大小时,您应该使用可缩放像素(sp)作为单位(但永远不要将 sp 用于布局大小)。sp 单位默认与 dp 相同大小,但会根据用户首选的文本大小进行调整。


图1. 大小相同的两个屏幕可能具有不同数量的像素

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接