从一开始写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" />
得到的效果是这个样子
但是,当我们进入系统设置中修改字体大小时
再次进入之前的界面,发现了一些不一样的东西.
由此看来
使用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.
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
本文向大家介绍简单谈谈Android中SP与DP的区别,包括了简单谈谈Android中SP与DP的区别的使用技巧和注意事项,需要的朋友参考一下 从一开始写Android程序,就被告知这些常识 一、dp(或者dip device independent pixels) 一种基于屏幕密度的抽象单位。在每英寸160点的显示器上,1dp=1px。不同设备有不同的显示效果,这个和设备硬件有关。 二、sp(S
本文向大家介绍实例详解Matlab 与 Python 的区别,包括了实例详解Matlab 与 Python 的区别的使用技巧和注意事项,需要的朋友参考一下 一、Python简介 Python是一种面向对象的解释型计算机程序设计语言。Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议[2] 。Python语法简洁清
本文向大家介绍php die()与exit()的区别实例详解,包括了php die()与exit()的区别实例详解的使用技巧和注意事项,需要的朋友参考一下 网上搜索die与exit两个函数的区别,大部分的”标准答案”都是说die是退出并释放内存,exit是退出但不释放内存。 这个解释显然是错的,PHP手册中已经说过“die — Equivalent to exit().This language
本文向大家介绍Android MotionEvent中getX()和getRawX()的区别实例详解,包括了Android MotionEvent中getX()和getRawX()的区别实例详解的使用技巧和注意事项,需要的朋友参考一下 Android MotionEvent中getX()和getRawX()的区别实例详解 实例代码: 结论: 当你触到按钮时,x,y是相对于该按钮左上点(控件本身)的
一、什么是区间DP? 顾名思义:区间DP就是在区间上进行动态规划,求解一段区间上的最优解。主要是通过合并小区间的最优解进而得出整个大区间上最优解的DP算法。 二、核心思路 既然让我求解在一个区间上的最优解,那么我把这个区间分割成一个个小区间,求解每个小区间的最优解,再合并小区间得到大区间即可。所以在代码实现上,可以枚举区间长度len为每次分割成的小区间长度(由短到长不断合并),内层枚举该长度下可以
本文向大家介绍c#中(&&,||)与(&,|)的区别详解,包括了c#中(&&,||)与(&,|)的区别详解的使用技巧和注意事项,需要的朋友参考一下 对于(&&,||),运算的对象是逻辑值,也就是True/False &&相当与中文的并且,||相当于中文的或者 。(叫做逻辑运算符又叫短路运算符) 运算结果只有下列四种情况。 True && True = True (左边为true,再验证右