两分钟理解Android中SP与DP的区别

从一开始写Android程序,就被告知这些常识

  • 长度宽度的数值要使用dp作为单位放入dimens.xml文件中
  • 字体大小的数值要使用sp作为单位,也放入dimens.xml文件中

然后,就没有然后了,仿佛潜台词就是说,你记住去用就行了.

偶然有一天,当我们阴差阳错地将字体写成了dp,也是可以工作,而且效果和sp一样.

这时候,就开始怀疑了,到底有啥区别呢,dp和sp有什么不同呢?

我们做个简单的Sample验证一下,如下,一个布局代码

1 2 3 4 5 6 7 8 9 10 11 12

<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="18sp" android:text="Hello World! in SP" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="18dp" android:text="Hello World! in DP" />

得到的效果是这个样子

但是,当我们进入系统设置中修改字体大小时

再次进入之前的界面,发现了一些不一样的东西.

由此看来

  • 使用sp作为字体大小单位,会随着系统的字体大小改变
  • 而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来跟随用户字体大小设置

因此通常情况下,我们还是建议使用sp作为字体的单位,除非一些特殊的情况,不想跟随系统字体变化的,可以使用dp.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏vue学习

14、商品分类等模块及flex布局

这是这本章节的重点,大家可以看到在我的页面基本布局中大量使用了flex布局,所以我觉得这个很重要。 (1)这是对flex的语法总结的一份思维导图,大家可以看看

18030
来自专栏数据小魔方

R语言可视化——REmap动态地图

今天开始,要跟着大家学习一个新的可视化R包——REmap包。 说起来,这个包要归功于百度的可视化开源项目——echarts,它是国内为数不多的高水平开源可视化j...

94060
来自专栏IT大咖说

百度脑图解析:如何进行web复杂应用的渐进式开发

23320
来自专栏飞雪无情的博客

Go语言生成二维码是如此简单

二维码作为一种快速的输入手段越来越流行,支付,添加好友,买东西,扫个二维码就可以,非常方便。那么二维码是如何制作生成的呢?我们如何制作自己的二维码呢?

38030
来自专栏CDA数据分析师

R可视化之交互式地图展示

来源 | 数据人网 文 | 薛丽丹 leaflet是来构建交互式地图JavaScript库。RStudio发布了一些允许在R建立这些地图的包,我们可以利用lea...

31390
来自专栏郭诗雅的专栏

Three.js camera初探——转场动画实现

three.js是用javascript写的基于webGL的第三方3D库,通过它可以在网页中进行3D建模,结合上TweenMax.js动画库,在网页中实现3D动...

4.5K30
来自专栏数据的力量

制作精彩的傻瓜版Excel气泡图

85380
来自专栏菩提树下的杨过

silverlight3中的"伪"3D

silverlight3中的3d效果,实际上是通过2d+算法模拟出来的"伪3D"(个人估计可能是考虑跨平台和显卡硬件支持通用性所以最终采用了这种设计) ? 上面...

21580
来自专栏macOS 开发学习

cocos2d-objc 3.0+ 游戏开发学习手册(五): 纹理打包与CCSpriteFrameCache

在游戏开发中,通常对于性能的处理是比应用型的App要敏感一些.游戏中的操作往往比较频繁而且多数都需要立刻响应,若是性能问题导致用户体验卡顿,算是比较糟糕的情况了...

8920
来自专栏人工智能头条

一边吃瓜看球,一边完成AI应用实践——手写体识别入门

23920

扫码关注云+社区

领取腾讯云代金券