将40px转换为sp

时间:2012-03-06 10:56:58

标签: android

40px的sp值是多少?还请告诉转换公式。

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

2 个答案:

答案 0 :(得分:13)

case COMPLEX_UNIT_SP:
     return value * metrics.scaledDensity;
来自TypedValue.applyDimension()来源

这会将sp转换为px,只需转置它就可以获得将px转换为sp的公式:

sp = px / DisplayMetrics.scaledDensity

答案 1 :(得分: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