Android开发经验谈Android开发半栈工程师

【Android屏幕适配】浅析sp与dp的区别

2017-09-13  本文已影响157人  紫豪
phone.jpg

前言

关于Android中的dp、sp,相信大家都知道它们的作用,网上也有很多文章介绍过在进行界面设计与适配时该如何去使用它们,但有些时候我们看过之后,还是对sp于dp的关系会有一种云(yi)山(lian)雾(meng)罩(bi)的感觉,这里根据我个人的一些经验,来谈谈对它们的认知,如有不妥之处,欢迎各位批评指正。


官方文档对sp、dp的描述

通过对上述文档的解读,我们可以得知:
1. 官方推荐我们使用sp作为字体的大小单位;
2. sp会根据屏幕密度和用户的偏好(字体设置)的改变而调整——受屏幕密度、用户设置的影响。

通过对上述文档的解读,我们可以得知:
1. 使用dp为单位进行UI元素的设计,可以更好的适应不同屏幕密度的设备;
2. DP与像素的比例是随着屏幕密度的变化而变化的。

实践是检验真理的唯一标准

这里我们新建一个layout,在里面添加两个TextView,分别使用sp、dp作为大小单位来看下在720p与1080p的设备上的效果,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:background="@android:color/white"
              android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="这是使用DP作为单位的TextView"
        android:textColor="@android:color/black"
        android:textSize="26sp"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="这是使用DP作为单位的TextView"
        android:textColor="@android:color/black"
        android:textSize="26dp"/>

</LinearLayout>

在1080p设备上的效果:

1080p效果.png
在720p设备上的效果:
720p效果.png
将设备字体从正常(普通)设置为超大的效果:
设置字体后效果.png 设置.png

总结

通常情况下,建议使用sp作为字体大小的单位,但如果需要避免界面受到用户个人设置的影响时,可以使用dp来代替

Android Dimension对sp/dp的描述


如果您有更好的建议欢迎评论分享,如有错误,请批评指正,谢谢。

上一篇 下一篇

猜你喜欢

热点阅读