40px的sp值是多少?还请告诉转换公式。
我正在尝试将psd中存在的字体大小转换为用于mdpi密度的sp单位,即320 * 480和160 dpi
答案 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时的单位,以确保正确显示 你的用户界面在不同密度的屏幕上。