当前位置: 首页 > 编程笔记 >

简单谈谈Android中SP与DP的区别

郑狐若
2023-03-14
本文向大家介绍简单谈谈Android中SP与DP的区别,包括了简单谈谈Android中SP与DP的区别的使用技巧和注意事项,需要的朋友参考一下

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

一、dp(或者dip device independent pixels)

一种基于屏幕密度的抽象单位。在每英寸160点的显示器上,1dp=1px。不同设备有不同的显示效果,这个和设备硬件有关。

二、sp(Scaled Pixels)

主要用于字体显示,与刻度无关的一种像素,与dp类似,但是可以根据用户的字体大小首选项进行缩放。

简单的说

  • 长度宽度的数值要使用dp作为单位放入dimens.xml文件中
  • 字体大小的数值要使用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"
    />

得到的效果是这个样子

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

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

由此看来

  • 使用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.

 类似资料:
  • 本文向大家介绍简单谈谈apache与nginx,包括了简单谈谈apache与nginx的使用技巧和注意事项,需要的朋友参考一下 一、 关于Apache与Nginx的优势比较     不断有人跟我说Nginx比Apache好、比Apache快之类。Nginx更主要是作为反向代理,而非Web服务器使用。我翻译过一本关于反向代理的技术书籍,同时精通Apache API开发,对Nginx和Apache的工

  • 本文向大家介绍简单谈谈Python中的json与pickle,包括了简单谈谈Python中的json与pickle的使用技巧和注意事项,需要的朋友参考一下 这是用于序列化的两个模块: • json: 用于字符串和python数据类型间进行转换 • pickle: 用于python特有的类型和python的数据类型间进行转换 Json 模块提供了四个功能:dumps、dump、loads、load

  • 本文向大家介绍Android 中SP与DP的区别实例详解,包括了Android 中SP与DP的区别实例详解的使用技巧和注意事项,需要的朋友参考一下 从一开始写Android程序,就被告知这些常识 1.长度宽度的数值要使用dp作为单位放入dimens.xml文件中 2.字体大小的数值要使用sp作为单位,也放入dimens.xml文件中 然后,就没有然后了,仿佛潜台词就是说,你记住去用就行了. 偶然有

  • 本文向大家介绍简单谈一谈Java中的Unsafe类,包括了简单谈一谈Java中的Unsafe类的使用技巧和注意事项,需要的朋友参考一下 Unsafe类是啥? Java最初被设计为一种安全的受控环境。尽管如此,Java HotSpot还是包含了一个“后门”,提供了一些可以直接操控内存和线程的低层次操作。这个后门类——sun.misc.Unsafe——被JDK广泛用于自己的包中,如java.nio和j

  • 本文向大家介绍简单谈谈python中的多进程,包括了简单谈谈python中的多进程的使用技巧和注意事项,需要的朋友参考一下 进程是由系统自己管理的。 1:最基本的写法 2、实际上是通过os.fork的方法产生进程的 unix中,所有进程都是通过fork的方法产生的。 3、线程共享内存 进程不共享内存: 若想共享内存,需使用multiprocessing模块中的Queue 4、锁:仅是对于屏幕的共享

  • 本文向大家介绍谈一谈let与var的区别相关面试题,主要包含被问及谈一谈let与var的区别时的应答技巧和注意事项,需要的朋友参考一下 No description provided.