【问题标题】:Convert 40px to sp将 40px 转换为 sp
【发布时间】:2012-03-06 10:56:58
【问题描述】:

40px 的 sp 值是多少?也请说出换算公式。

我正在尝试将 psd 中的字体大小转换为 mdpi 密度的 sp 单位,即 320*480 和 160 dpi

【问题讨论】:

标签: android


【解决方案1】:
case COMPLEX_UNIT_SP:
     return value * metrics.scaledDensity;

来自TypedValue.applyDimension() 来源

这会将sp转换为px,只需将其转置即可得到将px转换为sp的公式:

sp = px / DisplayMetrics.scaledDensity

【讨论】:

  • 感谢您的回答。这是完美的
【解决方案2】:
px = dp * (dpi / 160)

这不会将您的 sp 转换为 px,反之亦然。但是,sp 和 dp 几乎相似,因此,我认为使用这个公式是安全的。

与密度无关的像素 (dp) 定义 UI 布局时应使用的虚拟像素单位,以与密度无关的方式表示布局尺寸或位置。

与密度无关的像素相当于一个物理像素 160 dpi 屏幕,这是系统假定的基线密度 对于“中等”密度屏幕。在运行时,系统透明 根据实际情况,根据需要处理 dp 单位的任何缩放 使用的屏幕密度。 dp 单位到屏幕的转换 像素很简单:px = dp * (dpi / 160)。例如,在 240 dpi 上 屏幕,1 dp 等于 1.5 个物理像素。你应该总是使用 dp 定义应用程序 UI 时的单位,以确保正确显示 不同密度的屏幕上的用户界面。

来源Supporting Multiple Screens

【讨论】:

    猜你喜欢
    • 2011-09-09
    • 2012-11-04
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    相关资源
    最近更新 更多