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,系统会根据屏幕密度的变化自动进行转换

Android dp和sp的用法汇总的更多相关文章

  1. Android度量单位说明(DIP,DP,PX,SP) (转帖)

    (一)概念 dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA.HVGA和QVGA 推荐使用这个,不 ...

  2. Android的px、dp和sp

    Android的px.dp和sppx: 即像素,1px代表屏幕上一个物理的像素点:偶尔用到px的情况,是需要画1像素表格线或阴影线的时候. dp: 这个是最常用但也最难理解的尺寸单位.它与“像素密度” ...

  3. Android中dip、dp、sp、pt和px的区别

    1.概述 过去,程序员通常以像素为单位设计计算机用户界面.例如:图片大小为80×32像素.这样处理的问题在于,如果在一个每英寸点数(dpi)更高的新显示器上运行该程序,则用户界面会显得很小.在有些情况 ...

  4. Android中常用单位dp,px,sp之间的相互转换

    MainActivity如下: package cc.testunitswitch; import android.os.Bundle; import android.util.DisplayMetr ...

  5. Android度量单位说明(DIP,DP,PX,SP)

    本文转载于:http://blog.sina.com.cn/s/blog_6b26569e0100xw6d.html (一)概念 dip: device independent pixels(设备独立 ...

  6. Android计量单位px,in,mm,pt,dp,dip,sp和获取屏幕尺寸与密度

    ###########################################Android计量单位########################################### px ...

  7. [转]Android中dp,px,sp概念梳理以及如何做到屏幕适配

    http://blog.csdn.net/jiangwei0910410003/article/details/40509571 今天又开始我的App开发,因为之前一直做的是SDK,所以涉及到界面UI ...

  8. Android中dip,dp,sp,pt和px的区别

    dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA.HVGA和QVGA 推荐使用这个,不依赖像素. ...

  9. Android px、dp、sp之间相互转换 系统默认12 sp

    px  就是像素 sp=dpX字体比例(1.25f) 一.dp(或者dip device independent pixels) 一种基于屏幕密度的抽象单位.在每英寸160点的显示器上,1dp=1px ...

随机推荐

  1. Linux2.6中的Slab层

          还记得一个进程创建的时候是什么给它分配的“进程描述符”吗?没错,是slab分配器,那么,这个slab分配器是个什么东西呢?       分配和释放数据结构是所有内核中最普遍的操作之一.为了 ...

  2. UVA122-Trees on the level(链二叉树)

    Trees on the level Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Sub ...

  3. [置顶] .NET下枚举类型的Save和Load分析

    今天在写代码的时候,心血来潮对原来的字符串保存状态位的方式很不满意,对于代码里出现了 state == "1" 这样的状态判断很是不爽.那么理想中的判断是怎样的呢?很简单如你所想枚 ...

  4. ios数组基本用法和排序

    1.创建数组 // 创建一个空的数组 NSArray *array = [NSArray array]; // 创建有1个元素的数组 array = [NSArray arrayWithObject: ...

  5. HDU1250:Hat's Fibonacci

    Problem Description A Fibonacci sequence is calculated by adding the previous two members the sequen ...

  6. SQL SERVER 2008 R2 自动备份并删除过期备份数据

        我们的系统维护的过程中肯定需要对数据库进行定期的备份,但是如果定时手工备份的话,不但浪费时间,也不能保证每次都可以按时备份,所以自动备份成为了我们的不二选择,但是定时备份需要定期清理备份文件, ...

  7. objective-C学习笔记(四)函数成员:方法(函数)

    函数分为:  全局函数(C语言函数) 成员函数(OBJC方法):实例方法 “-” 和类方法“+”的区别 //这里要区别静态变量(类变量).全局函数.常量的区别 OBJC里面,所有方法默认为公有方法.没 ...

  8. UVa1585 Score

    #include <stdio.h> int main(){    int T, O, score;    char str[81], *p;    scanf("%d" ...

  9. QT中QWidget、QDialog及QMainWindow的区别

    本文转自http://www.cnblogs.com/aqxin/archive/2011/05/23/2054156.html QWidget类是所有用户界面对象的基类. 窗口部件是用户界面的一个基 ...

  10. ThinkPHP第十九天(Ueditor高亮插件、扩展函数载入load、静态缓存)

    1.使用Ueditor编辑器,插入代码后,显示的时候高亮显示,需要调用Ueditor中的第三方插件third-party中的SyntaxHighlighter 调用方法: 引入CSS和JS文件,并调用 ...