【问题标题】:How do I convert pt to sp?如何将pt转换为sp?
【发布时间】:2012-11-04 10:58:51
【问题描述】:

我是一名视觉设计师,从事 android 设计,我正在尝试为我们的工程师指定我的 PSD 文件。我似乎在任何 Android 文档中都找不到关于将点大小转换为 SP 类型的任何文档.(只是那个 SP 应该用于类型)。

【问题讨论】:

标签: android units-of-measurement psd


【解决方案1】:

像素和 sp 之间没有直接映射,因为 sps 是随着用户在系统设置中更改设备字体大小而动态设置的。用户可能希望以更小或更大的尺寸查看所有应用字体。这是操作系统提供的辅助功能。

【讨论】:

  • 罗杰,但是在我的 PSD 中设计理想的屏幕布局时...我指定点大小,因为这决定了类型与我设计中所有其他元素的关系...我们不'在 Photoshop 中没有 SP 测量单位......所以如果我选择 22pts 作为字体......我在问如何在 SP 单位的规范中标记它。有没有办法将 22pt 转换为 sp 用于规范目的?
  • 也...我确实意识到用户会更改类型...我主要是问如何将我的 pt 大小传达为 SP...必须有某种方法传达这一点,因为大多数平面设计师都使用 pts(而不是像素)排版
  • 在这种情况下,我认为 1 对 1 映射很合适。
【解决方案2】:

^弗拉维奥所说的。但请查看 Android 开发者网站上的显示指标类概述。你可能会在这里找到你需要的东西...http://developer.android.com/reference/android/util/DisplayMetrics.html#

【讨论】:

  • 对不起,我仍然没有看到任何特定于点大小的东西 --> sp 大小转换...我正在寻找比率等。
  • 当我从 android 开发网站打开一个 gui 文档(提供的 PSD 和所有 android 元素)时,我点击了某种类型,打开字体调色板,pt 大小为 1: 1 比率与 GUI 文档中提供的规范...
【解决方案3】:

问题在于它取决于密度。真的,它们不是用来比较的好测量值。

  • :一个 pica 有 12 个点,每英寸 6 pica,所以每英寸 72(更准确地说是 72.27)点。

  • 与设备无关的像素 (DP):这些将等于 MDPI 显示器的像素大小、HDPI 显示器的 1.5 倍像素大小和 XHDPI 显示器的 2 倍像素大小. (例如 12dp = 12px MDPI、18px HDPI、24px XHDPI)。

  • 缩放像素:这些将等同于 DP 值,但会根据用户偏好缩放为更小或更大。

如果您以 72 dpi(Photoshop 默认 DPI 设置)进行设计,则 8pt 字体将等效于 8px,即 MDPI 为 8px,HDPI 为 12px,XHDPI 为 16px,或者更简单地为所有密度的 8dp .我不知道对不同的 SP 设置应用了多少缩放,所以你必须找出它,但基本上我会给他们模型并让他们从那里适当地调整它的大小——他们肯定可以把它弄得很漂亮从此视觉上关闭。

【讨论】:

  • dp 应该和 sp 一样,只是它可以根据用户的喜好改变:developer.android.com/guide/topics/resources/…。此外,由于大多数设备都使用 XHDPI,设计人员可能不想更改每个文件的值(但适用于 XHDPI),我认为最好只除以 2。
  • 这个信息非常有用。我使用这个calc 来计算photoshop pt 与android sp 之间的比率,但直到我看到这个答案并意识到72 dpi photoshop 图像使1pt 成为1dp 和我从设计师那里得到的photoshop 图像之前,它没有任何意义是 300 dpi,所以 1pt 是 4.16dp,我们都知道 1dp = 1sp。所以现在它确实有意义:)
【解决方案4】:

与 dp(和减去用户文本大小因子的 sp)相比,pt 具有几乎完全相同的物理测量值。 Dp 或多或少是一个粗略的近似值,因为它在较宽的 dpi 范围内使用相同的因子。

您无法将 pt 转换为 sp,就像 Flavio 所说的那样。但是,您可以大致将 pt 转换为 dp(在极端情况下为 +/- 30%,但至少预期为 +/-10%)。

使用 dpi 存储桶 (ldp=120,mdpi=160,hdpi=240,xhdpi=320),最通用的转换因子将是 x0.45 (= 72/120*0.75 = 72 /160*1 = 72/240*1,5 = 72/320*2) 如果使用精确的 dpi 存储桶值。

更精确的因素:

  • mdpi(缩放系数:1.0)10.1" WXGA 屏幕 (149dpi) 为 0.483076923 (= 72/149 * 1.0)
  • hdpi(缩放系数:1.5)Nexus 7 (216dpi) 0.5 (= 72/216 * 1.5)
  • xhdpi(缩放因子:2.0)Nexus 10 (300dpi) 为 0.48 (= 72/300 * 2)

所以 12 pt 会打开...

  • 10.1" WXGA:24.84dp
  • Nexus 7:24 dp
  • Nexus 10:25dp
  • dpi 桶值:26.666dp

您可以对 sp 使用相同的值,但请记住,这些值可能会因用户设置而增加/减少。

【讨论】:

  • 所以要从 pt 转换为 sp/dp,它(大约)是除以 2 的计算,对吧?在这种情况下,为什么许多在线转换器会为 sp/dp 带来巨大的价值?
  • 他们可能使用不同的密度。我在这里使用的是 android pt 单位,即 android 如何显示 x pt,即每英寸 72 pts。所以它取决于密度,如果你每英寸有 300 pt,你的因素会有所不同。
  • 会不会是因为PPI的密度配置? PS(和其他图像编辑工具)的默认值为 72。也许您需要根据您希望使用的密度进行更改,然后它会给您正确的值?
  • 是的(见编辑的评论)。我没有用它来从 PS 转换为 dp,而是将 dp 转换为 android-pt,所以我不知道它与 PS 的效果如何。
  • 我也不用PS。设计师问我如何转换,因为在线工具给了我巨大的价值结果。那么你说我应该告诉设计师使用多少 DPI(或 PPI?)来用于图像,假设它是用于 XHDPI 设备的?有些网站说是300,但我记得XHDPI是320...
【解决方案5】:

这是一个很好的工具,可以帮助在各种测量之间进行转换 - 输入你知道的,它会计算出其余的!

http://angrytools.com/android/pixelcalc/

【讨论】:

  • 当把 32pt 放在那里时,你会得到 71sp ,这是巨大的。这里真的很奇怪。
  • 他们正在考虑 1 英寸 == 72pt == 160 dp
【解决方案6】:

每英寸有 72 pts,每英寸有 160 sp(在设备设置中使用标准字体大小)。这意味着每 72 点有 160sp。 160sp/72pts 简化为 20/9。因此,当将 pts 转换为 sp 或 dp 时,请使用 pts*20/9。正如其他人已经提到的那样,sp 确实因用户的设置而异,因此如果您不希望文本大小随设备设置而变化,请使用 dp。

【讨论】:

  • 您的陈述是否有“每英寸 160 sp”的参考资料? Sp includes scaling based on the user's font size preferences,所以从 sp 到英寸没有固定的转换因子。
  • 是的,但是如果用户在他们的设置中使用正常的字体大小,它与 dp 的基数为每英寸 160 相同。如果 OP 不希望字体随用户偏好而改变,那么他们不应该使用 sp,他们应该使用 dp。 “一个 dp 是一个与密度无关的像素,对应于 160 dpi 像素的物理大小。一个 sp 是相同的基本单位,但按用户首选的文本大小(它是一个与比例无关的像素)进行缩放,所以你在定义文本大小时应该使用这个度量单位(但从不用于布局大小)。” developer.android.com/training/multiscreen/screendensities.html
  • 那么你应该澄清你对“每英寸有 72 pts,每英寸有 160 sp使用标准字体大小设置”的答案。您目前仅在答案末尾提到这一点。
猜你喜欢
  • 2015-10-27
  • 2022-01-27
  • 2014-06-03
  • 2017-07-19
  • 1970-01-01
  • 2011-09-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多