最近在学习Android开发,一直没有弄清楚px,dp,dip,sp的区别。今天正好有时间,就花时间研究了一下。

    众所周知,Android厂商非常多,各种尺寸的Android手机、平板层出不穷。导致了Android生态环境的碎片化现象越来越严重。Google公司为了解决分辨率过多的问题,在Android的开发文档中定义了px,dp,dip,sp,方便开发者适配不同分辨率的Android设备。

1.基础知识:

    mm:millimeters 毫米,长度单位

    in:inches  英寸,长度单位,屏幕物理尺寸大小的基本单位。

    pt:points  一个标准单位,大小为一英寸的屏幕大小的1/72。

dpi: dots per inch 即每英寸的像素点。

举个例子:

假设QVGA(320*240)分辨率的屏幕物理尺寸是(2英寸*1.5英寸),那么这部手机的dpi=160。

Screen size(屏幕尺寸)指的是手机实际的物理尺寸。

如iPhone4S是3.5英寸,这里指的是手机屏幕对角线的长度是3.5英寸。

Resolution(分辨率)指手机屏幕横、竖方向像素个数。

常见的手机分辨率:QVGA(240×320像素),HVGA(480×320像素),WVGA(800×480像素),720P(1280x720像素),1080P(1920x1080像素),2K(2560x1440像素)

  

2.基本定义:

    px (Pixel的缩写,即像素) 是指一个像素。

    sp  (scale-independent pixels)是指比例独立像素。

dip (device independent pixels)是指设备独立像素。

  dp:(Density-independent pixel)在Android文档中(http://developer.android.com/guide/practices/screens_support.html#terms),它的计算方法是:px = dp * (dpi / 160)。

看一下dp的单位是什么:像素 = dp的单位 * 像素/英寸  。可以看出dp的单位是长度单位英寸。1dp的长度 = 1 * dpi / 160 * 1 / dpi 英寸 = 1 / 160 英寸 。

dp的意义是:你可以根据看到的实际大小,在应用中设置对应的dp值,而使得不同的设备上看起来一样大。

3.不同之处

px(像素)表示屏幕的真实像素,比如现在流行的1080P手机和2K手机,1080P手机就是1920x1080像素,也就是说这个手机的屏幕横向有1080个像素,纵向有1920个像素。这个值是绝对的,是多少就是多少,不会改变。

sp(比例独立像素),也就是说是与密度和字体缩放度无关的像素,主要用于字体的大小。

dip(设备独立像素)这个是逻辑像素单位,其实就是dp。

欢迎讨论交流,我的邮箱是JohnTsai.Work@gmail.com。

    欢迎转载,转载请注明网址,谢谢!

在Android中,px,dp,dip,sp的不同之处的更多相关文章

  1. px,dp,dip,sp,in,mm,pt详细分析

    px,dp,dip,sp,in,mm,pt详细分析 px   :(pixels),屏幕的像素点,不同的设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多. dip  :(devi ...

  2. Android中px和dip的区别

    在Android手机的诞生之初,由于Android系统是开源的,一开始便有众多的OEM厂商对Android手机进行深度定制,于是乎Android手机的皮肤和屏幕大小都变得百花齐放,这可苦逼了我们这群开 ...

  3. (转)Android中px与dip,sp与dip等的转换工具类

    功能 通常在代码中设置组件或文字大小只能用px,通过这个工具类我们可以把dip(dp)或sp为单位的值转换为以px为单位的值而保证大小不变.方法中的参数请参考http://www.cnblogs.co ...

  4. android:px,dp(dip),sp的差别

    1.px:表示屏幕的实际像素,比如320*480的屏幕在横向有320个像素,在纵向有480个像素,假设指定的某个空间的单位为px.那么在不同分辨率下的手机上.显示的都是指定的大小.一般不推荐使用px. ...

  5. Android中px dpi dip density densityDpi 的相关说明

    转自:http://www.cnblogs.com/wader2011/archive/2011/11/29/2267490.html 概念解释 名词 解释 Px (Pixel像素) 不同设备显示效果 ...

  6. Android中px, ppi, dpi, dp, dip, sp概念解析

    Android中px, ppi, dpi, dp, dip, sp概念解析

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

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

  8. Android的px、dip、sp的区别

    Android的px.dip.sp的区别 我们在页面布局的时候,经常会设置容器的长度,但是到底该使用哪个作为长度的单位而懊恼. 在Android中支持的描述大小区域的类型有以下几种:   px(pix ...

  9. Android的计量单位px,in,mm,pt,dp,dip,sp

    android中dip.dp.px.sp和屏幕密度 1. dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持 ...

随机推荐

  1. 分布式唯一id生成器的想法

    0x01 起因 前端时间遇到一个问题,怎么快速生成唯一的id,后来采用了hashid的方法.最近在网上读到了美团关于分布式唯一id生成器的解决方案, 其中提到了三种生成法:(建议看一下这篇文章,写得很 ...

  2. Docker 容器更新,打包,上传到阿里云

    上几章讲了镜像的拉取和运行. 这次来尝试如何将已经运行的容器打包,封装成镜像,并且上传到阿里云上,为了别的地方下载和使用更加的方便. 首先,进入镜像,如果不清楚地,可以看下上一章. [root@VM_ ...

  3. [转]SpringMVC单文件上传、多文件上传、文件列表显示、文件下载

    一.新建一个Web工程,导入相关的包 springmvc的包+commons-fileupload.jar+connom-io.jar+commons-logging,jar+jstl.jar+sta ...

  4. 【转】Lombok:让JAVA代码更优雅

    原文地址:http://blog.didispace.com/java-lombok-1/ 关于Lombok,其实在网上可以找到很多如何使用的文章,但是很少能找到比较齐全的整理.我也一直寻思着想写一篇 ...

  5. mysql 实现多列唯一性约束

    alter table j_assistants add constraint unique_name_course_class unique(name_id,course_id,class_id);

  6. C#中[] 、List、Array、ArrayList等数据结构的差异简述

    [] 是针对特定类型.固定长度的. List 是针对特定类型.任意长度的. Array 是针对任意类型.固定长度的. ArrayList 是针对任意类型.任意长度的. Array 和 ArrayLis ...

  7. node学习笔记9——cookie,session相关操作

    下面讲的都是基Express及相关的包.所以在实践本篇文章之前,通过npm安装好Express, cookie-parser, cookie-session这三个安装包. 先简单说一下,如何用Expr ...

  8. Android progressbar条形带背景渐变进度风格进度条

    效果图: 代码如下: <ProgressBar android:id="@+id/progressBar" style="?android:attr/progres ...

  9. jquery miniui 学习笔记

    1.取组件值 传递form data,load发送 请求加载数据 <script type="text/JavaScript">  mini.parse();  // ...

  10. javascript控制页面(含iframe进行页面跳转)跳转、刷新的方法汇总

    一.JS方式的页面跳转1.window.location.href方式    <script language="JavaScript" type="text/ja ...