先聊聊熟悉的几个单位

围绕着各种屏幕做设计和开发的人会碰到下面几个单位:in, pt, px, dpi,dip/dp, sp

下面先简单回顾下前四个单位:

“in”

inches的缩写,英寸。就是屏幕的物理长度单位。一英寸等于2.54cm。比如Android手机常见的尺寸有5寸、5.5寸、6寸等,这里的长度都是指手机对角线的长度。

“pt”

“points” 的缩写,点。一个点等于1/72英寸,所以“点”也是个长度单位而已。

“px”

“pixel” 的缩写,像素。是画面显示的基本单位,真实的像素并不是点或者方块(虽然有时这样显示),也没有实际固定长度,只是一个抽象的取样。设计中的像素和实际显示屏上的像素相对应。

屏幕的分辨率一般就描述为“宽向像素数X纵向像素数”。比如 Android手机常见的分辨率有:320 X 480, 480 X 800, 1080 X 1920等。

“dpi”

"dots per inch" 的缩写,“每英寸的像素数”,即像素密度。下图展示了600 dpi和1200 dpi的对比,明显后者的像素更加密集。

安卓手机种类多样,有各种屏幕像素密度。比如120dpi是低密度(ldpi)类型,160dpi 是中密度(mdpi),240dpi是高密度(hdpi),320dpi是超高密度(xhdpi),480dpi是超超高密度(xxhdpi)。

为什么要引入 dp 这个单位

像素(px)是设计师们熟知的单位,比如画图自定义尺寸的时候就来个宽xx像素乘以高xx像素,好像一直没什么问题。

不过,如果你仔细观察一下就会发现,在做UI设计时,设计工具给出的默认手机尺寸并不是按像素数来计算的。

以墨刀为例,提供的三星的尺寸是360 x 640。

但这当然不是三星屏幕的像素数。

(否则三星要哭晕在厕所)

查了下三星Galaxy S5/S6/S7屏幕的实际像素数是这样:

那360*640是什么?

细心的同学可能发现了…

即使S5和S6/7的像素分辨率不一样,但分辨率左边一栏都写着360 x 640 dp。

所以,什么是 dp,为什么要有 dp?

答:是为了产品原型设计图能适配不同像素密度的屏幕。

举个栗子吧,如果设计师用像素为单位画图,画了一个4px * 4px的 icon,这样的 icon 放在160dpi和320dpi的两种屏幕上展示,会变成大概这样:

 

比例完全失调!

因此,干脆就不以像素为单位直接画图,而是引入一个新的单位 dp。dp 全称是 “density- independent pixel”,即“密度无关像素”,所以也可以缩写成 dip,不过 dp 更常用。

定义dp为 160dpi 时的一个像素大小;那么到 320 dpi 时,它就相当于两个像素。

两者的数值关系如下:

px= dp *(dpi/160)

这样的话,假如做一个50*50dp的icon,放到160dpi的屏幕上就是50px*50px,放到320dpi的屏幕上就是100px*100px。各元素的布局和比例便不会失调。

所以设计师在给开发切图时,经常会需要切一倍图、二倍图和三倍图,以满足不同像素密度屏幕的需要。墨刀的Sketch切图功能就能让你一键切出一倍、二倍和三倍图,没有繁琐操作。

这里插一句 sp 这个单位,sp 跟 dp 类似,全称是 scale-independent pixel (也会缩写为 sip), 即“独立比例像素”sp 主要用作字体的单位,开发用此单位设置文字大小,这样在不同像素密度的屏幕上能进行同比例的扩大缩小。

OK,回到 dp。

既然知道了要用dp为单位画图,那面对各种手机型号和分辨率,画图前需要把px换算成dp。不过,贴心的墨刀已经把这些换算给做好啦!

考虑到今年全屏手机雨后春笋般涌现出来,墨刀也及时在Android设备默认尺寸中添加了Google Pixel 2 和 Google Pixel 2XL的 dp 尺寸,让你免去px和dp的换算,轻松进入画图流程。

当然,如果真的遇到了要为某个小众机型适配而没有默认选项,那就选择最下面的customize自定义好了。怎么算? 非常容易。

查到某款机型的分辨率为a*b px,该机型的像素密度dpi(也会写作ppi)为c。

那么需要自定义的dp尺寸为:

宽= a/(c/160) ,高=b/(c/160)

好了,搞定!

产品设计教程:如何理解 px,dp,dpi, pt,看这一篇就够了的更多相关文章

  1. 理解Volatile关键字,其实看这一篇就够了,写的非常细致

    前言 volatile是Java虚拟机提供的轻量级的同步机制. volatile关键字作用是什么? 两个作用: 1.保证被volatile修饰的共享变量对所有线程总数可见的,也就是当一个线程修改了一个 ...

  2. 产品设计教程:利用“系列位置效应”优化UI

    任何博得人们喜欢的产品都在一定程度上契合了用户的心理需求.设计和心理学息息相关,掌握一些基本心理学知识,设计师的作品更能在潜意识中抓住用户的心. 系列位置效应 “系列位置效应”(The Serial ...

  3. 产品设计教程:wireframe,prototype,mockup到底有何不同?

    wireframe,prototype,mockup 三者经常被混用,很多人把三者都叫原型,真的是这样吗? 我们来看看三者到底有何不同.先来做一道选择题: 从这张图可以看出,prototype 和其他 ...

  4. Makefile教程(绝对经典,所有问题看这一篇足够了)【转】

    该篇文章为转载,是对原作者系列文章的总汇加上标注. 支持原创,请移步陈浩大神博客: http://blog.csdn.net/haoel/article/details/2886 makefile很重 ...

  5. HTML教程(看完这篇就够了)

    HTML教程 超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言.您可以使用 HTML 来建立自己的 WEB 站点,HTML 运 ...

  6. 理解 Python 装饰器看这一篇就够了

    讲 Python 装饰器前,我想先举个例子,虽有点污,但跟装饰器这个话题很贴切. 每个人都有的内裤主要功能是用来遮羞,但是到了冬天它没法为我们防风御寒,咋办?我们想到的一个办法就是把内裤改造一下,让它 ...

  7. sharding-jdbc教程 看这一篇就够了

    ​ Sharding-JDBC是ShardingSphere的第一个产品,也是ShardingSphere的前身. 它定位为轻量级Java框架,在Java的JDBC层提供的额外服务.它使用客户端直连数 ...

  8. Mybatis教程-实战看这一篇就够了

    转自:https://blog.csdn.net/hellozpc/article/details/80878563 1.从JDBC谈起 1.1.使用IDEA创建maven工程 1.2.引入mysql ...

  9. 性能测试:深入理解线程数,并发量,TPS,看这一篇就够了

    并发数,线程数,吞吐量,每秒事务数(TPS)都是性能测试领域非常关键的数据和指标. 那么他们之间究竟是怎样的一个对应关系和内在联系? 测试时,我们经常容易将线程数等同于表述为并发数,这一表述正确吗? ...

随机推荐

  1. day8 八、文件操作模式、文件的复制与文件游标操作

    一.文件操作 1.wr模式结合 ① w = open('1.txt', 'w', encoding='utf-8') # w:没有文件新建文件,有文件就清空文件 w.write('000\n') w. ...

  2. C# 方法中的this参数

    x 先看下面的代码: public static class StringExtension { public static void Foo(this string s) { Console.Wri ...

  3. Luogu 3369 / BZOJ 3224 - 普通平衡树 - [无旋Treap]

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=3224 https://www.luogu.org/problemnew/show/P3 ...

  4. 挖矿程序的工作原理(BTC为例)

    Mining时代进化:CPU挖矿 -> GPU挖矿 -> FPGA挖矿 -> ASIC挖矿CPU挖矿时代:SENGENERATEGPU挖矿时代:GETWORK Miner:挖矿的程序 ...

  5. cinder 和 qt5 vs2015结合

    下载编译好的cinder_0.9.1_vc2013, 用vs2015打开 cinder_0.9.1_vc2013\proj\vc2013\cinder.sln 重新编译 由于我用的qt也是vs2015 ...

  6. [algorithm][security] 模糊哈希(转)

    modsecurity中用到:  http://ssdeep.sourceforge.net/ 原文:http://www.xuebuyuan.com/1536438.html 最近看一篇paper, ...

  7. python实现斐波那契数列

    https://www.cnblogs.com/wolfshining/p/7662453.html 斐波那契数列即著名的兔子数列:1.1.2.3.5.8.13.21.34.…… 数列特点:该数列从第 ...

  8. 2018/09/05《涂抹MySQL》【权限管理】学习笔记(二)

    读 第四章<管理MySQL库与表> 第五章<MySQL的权限管理> 总结 1:当配置好 MySQL 数据库后,发现有几个默认的库,他们的意义和作用?(这里只做简单了解,之后用到 ...

  9. Selenium功能自动化测试工具

    Selenium也是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mozilla Firefox.Mozilla Suite ...

  10. jquery有几种选择器?

    ①.基本选择器:#id,class,element,*: ②.层次选择器:parent > child,prev + next,prev ~ siblings: ③.基本过滤器选择器::firs ...