1 》

dp 是跟像素密度无关的单位,也就是说在相同尺寸、但不同的分辨率的手机上,用dp标识的东西,显示的大小是一样的。

sp是用于标识字体的,它不仅跟屏幕尺寸有关,还跟设置的系统字体大小有关。

  1. <TextView
  2. android:id="@+id/tv"
  3. android:layout_width="wrap_content"
  4. android:layout_height="wrap_content"
  5. android:text="wahahahhahahahahhah"
  6. android:textSize="15sp"
  7. />
  8. <TextView
  9. android:layout_width="wrap_content"
  10. android:layout_height="wrap_content"
  11. android:text="wahahahhahahahahhah"
  12. android:textSize="15dp"
  13. android:layout_below="@+id/tv"
  14. />

系统字体大小为中时(默认的哦)

改为特大时:

所以 字体大小要用sp哦~

2》

Android设置字体大小, 该用sp还是dp? 大部分人肯定脱口而出, 用sp啊, 傻瓜都知道要用sp而不是dp!!!

那么为什么呢? 可能有人会说, 是google官方专门定义了sp这个单位来描述字体大小, google建议这样搞的!

我想说的是, 大家可能被google误导了吧. 我们来通过实验证明这个道理:

首先我示范一下sp, 我想listview item中的主文本大小设置成18sp, 然后我们看看他在不同屏幕上的反应:

1. Nexus 5

2. 华为某低端机

有没有发现, 华为机器上字体明显大了许多, 有点不符合预期啊有木有!!!

下面我们把sp改成dp, 也就是字体大小改成18dp, 再看看效果:

1. Nexus 5

2. 华为某低端机

明显发现, 用dp的话, 在高端机和低端机上体验更加一致, 字体大小比例更加合适!!!

当然, 我不是要和google抗衡, 非得用dp不用sp, 其实在实际开发中, 我们还是应该多用sp少用dp, 只有在字体比较大的时候, 比如超过了15sp时, 大家这时候就可以考虑用dp试试了.

3》

  1. dp也就是dip,这个和sp基本类似。

    如果设置表示长度、高度等属性时可以使用dp或sp。但如果设置字体,需要使用sp。

  2. 2

    dp是与密度无关,sp除了与密度无关外,还与scale无关。如果屏幕密度为160,这时dp和sp和px是一样的。1dp=1sp=1px,但如果使用px作单位,如果屏幕大小不变(假设还是3.2寸),而屏幕密度变成了320。那么原来TextView的宽度设成160px,在密度为320的3.2寸屏幕里看要比在密度为160的3.2寸屏幕上看短了一半。但如果设置成160dp或160sp的话。系统会自动将width属性值设置成320px的。也就是160 * 320 / 160。其中320 / 160可称为密度比例因子。

  3. 3

    如果使用dp和sp,系统会根据屏幕密度的变化自动进行转换

最新文章

  1. 二胎上位之路:html5报表和原生报表的笑尿撕逼
  2. VTK初学一,比较常见的错误1
  3. jquery总结06-动画事件04-自定义动画
  4. java基础比较好的笔记总结
  5. U盘安装Win7 64位
  6. HTML5学习笔记----html5与传统html区别
  7. github继续折腾
  8. centos下安装mysql步骤
  9. Rails多路径调用相同方法原路返回的方法
  10. (三十八)从私人通讯录引出的细节II -数据逆传 -tableView点击 -自定义分割线
  11. 【机器学习笔记一】协同过滤算法 - ALS
  12. [python] bluepy 一款python封装的BLE利器
  13. Vue 组件&amp;组件之间的通信 之 非父子关系组件之间的通信
  14. Servlet&#160;CDI&#160;Example&#160;Analysis
  15. Mxnet编译安装
  16. php优秀框架codeigniter学习系列——CI_Loader类分析
  17. Go Example--json
  18. python threading 用法
  19. 背水一战 Windows 10 (41) - 控件(导航类): Frame
  20. Linux 第六周实验

热门文章

  1. 理解Android的layout和measure
  2. Mysql 正则表达式 判断字段值不包含数字
  3. JavaSE复习日记 : Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符
  4. POJ 2778 DNA Sequence(AC自动机+矩阵快速幂)
  5. 重定向输入输出流--freopen
  6. AWT和Swing
  7. 微信开发_微信教程__微信通讯框架V1.0
  8. ORACLE备份手记
  9. codeforces 613A. Peter and Snow Blower
  10. hdu 4619 Warm up 2 二分图匹配