Android 中SP与DP的区别实例详解

作者:lqh 时间:2021-12-26 22:43:13 

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

1.长度宽度的数值要使用dp作为单位放入dimens.xml文件中

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

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

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

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

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


<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" />

得到的效果是这个样子

Android 中SP与DP的区别实例详解

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

Android 中SP与DP的区别实例详解

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

Android 中SP与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.

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

来源:http://www.androidchina.net/5519.html

标签:Android,SP与DP,区别
0
投稿

猜你喜欢

  • SpringCloud Eureka搭建的方法步骤

    2021-10-10 11:03:29
  • 深入理解c# checked unchecked 关键字

    2021-11-29 01:25:09
  • Android支付宝支付的示例代码

    2022-06-20 02:32:49
  • C#使用伪随机数实现加密用户密码的方法

    2023-06-27 05:27:56
  • C#观察者模式(Observer Pattern)实例教程

    2021-07-13 02:53:39
  • C#代码实现PDF文档操作类

    2022-01-30 07:03:02
  • 详细总结Java堆栈内存、堆外内存、零拷贝浅析与代码实现

    2023-11-21 01:52:29
  • Android自定义gridView仿头条频道拖动管理功能

    2022-09-08 00:11:41
  • Android 控件GridView使用案例讲解

    2023-07-14 17:33:28
  • Java中Synchronized的用法解析

    2023-07-28 22:40:51
  • Android继承现有控件拓展实现自定义控件textView

    2021-05-29 06:29:15
  • 解决IntelliJ IDEA中鼠标拖动选择为矩形区域问题

    2022-04-03 21:08:51
  • C#实现多线程的同步方法实例分析

    2021-11-01 11:56:42
  • java字符串比较获取字符串出现次数的示例

    2022-03-22 16:05:39
  • SpringBoot注入自定义的配置文件的方法详解

    2021-12-24 02:28:06
  • 深入理解Java显式锁的相关知识

    2022-06-16 09:59:41
  • C# 数组删除元素的实现示例

    2022-03-02 08:55:04
  • C#导出网站功能实例代码讲解

    2023-09-15 03:15:36
  • JUC循环屏障CyclicBarrier与CountDownLatch区别详解

    2021-11-17 10:40:08
  • C#实现根据图片的链接地址获取图片的后缀名

    2022-08-04 04:30:58
  • asp之家 软件编程 m.aspxhome.com