DP与SP的区别

来源:互联网 发布:在c语言中随机数函数是 编辑:程序博客网 时间:2024/05/18 00:16

描述

刚接触Android的时候,被告知:

  • 长度和宽度用dp表示
  • 字体的大小用sp表示

也不知道为什么,就像这就是常识。然后就记住了。
后来工作了,不注意的时候也会用dp来表示字体的大小,发现和sp没什么区别。
于是越来越不知道dp和sp的区别了。

定义

我们知道,dp是Android中用来定义UI布局中表达元素尺寸或位置的一个虚拟的像素单位,dp的存在是为了页面元素位置不受屏幕密度所影响。
那么sp又是什么东东呢,官方的解释是:

Scale-independent Pixels – This is like the dp unit, but it is also scaled by the user’s font size preference. It is recommend you use this unit when specifying font sizes, so they will be adjusted for both the screen density and the user’s preference.

大概意思就是:

  • sp受屏幕密度影响,也受到用户字体大小的影响
  • 建议使用sp来跟随用户字体大小设置

实践

布局文件

    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:textSize="25sp"        android:text="这个是SPSPSP"/>    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:textSize="25dp"        android:text="这个是DPDPDP"/>

效果一样:

更改系统字体大小(从Normal改为Huge):

再看效果:

总结

通常情况下,建议使用sp作为字体的单位。
特殊情况除外,例如不想随着系统字体变化而变化的时候。

1 0
原创粉丝点击