Android dp和sp的用法汇总

1 》

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

 

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

 

 

[html] view plaincopy
 
  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.   
  9.      <TextView  
  10.        android:layout_width="wrap_content"  
  11.        android:layout_height="wrap_content"  
  12.        android:text="wahahahhahahahahhah"  
  13.        android:textSize="15dp"  
  14.        android:layout_below="@+id/tv"  
  15.         />  

 

 

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

改为特大时:

 

 

所以 字体大小要用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,系统会根据屏幕密度的变化自动进行转换

posted @ 2015-06-08 17:54  guoliuya  阅读(2594)  评论(0编辑  收藏  举报