像素(Pixel)对于WEB开发者来说很是熟悉,在PC互联网时代没少与其打交道。进入移动互联网之后,随着移动设备屏幕的解析度越来越高,衍生了一些关于屏幕和像素的一些新概念,比如DPI,DP,PT,Retina,4K等等,本文对这些概念做一个简单的介绍。
DPI与PPI
DPI(Dots Per Inch)是印刷行业中用来度量空间点密度用的,这个值是打印机每英寸可以喷的墨汁点数。计算机显示设备从打印机中借鉴了DPI的概念,由于计算机显示设 备中的原子单位不是墨汁点而是像素,所以就创造了PPI(Pixels Per Inch),这个值是屏幕每英寸的像素数量,即像素密度(Screen density)。由于各种原因,目前PPI(主要是iOS)和DPI(比如在Android中)都会用在计算机显示设备的参数描述中,不过二者的意思是一样的,都是代表像素密度。
高PPI屏幕显示的元素会比较精细(看起来会比较小),低PPI屏幕显示的元素相对来说就比粗糙(看起来会比较大),我们通过一幅图来看看在不同PPI下元素显示的区别:
HD与4K
现在移动设备、智能电视宣传最多的两个关键词估计就是HD、4K,这二者都是用来描述显示设备分辨率的标准,到底二者之间有什么区别?
HD(High-Definition)的分辨率要高于1280x720px或者720p。
Full HD的分辨率要高于1920x1080px,目前是主流电视以及高端手机(比如Galaxy SIV, HTC one, Sony Xperia Z, Nexus5等)采用的是这个分辨率。
4K(也叫做Quad HD或者Ultra HD)的分辨率从3840x2160起步,主要是现在高端电视的分辨率;其还有一个更高的4096x2160的标准,主要用于电影放映机或者专业相机。
Retina
Retina display即视网膜屏幕,是苹果发布iPhone 4时候提出的,之所以叫做视网膜屏幕,是因为屏幕的PPI太高,人的视网膜无法分辨出屏幕上的像素点。iPhone 4/S的PPI为326,是iPhone 3G/S的两倍,如下图:
由于屏幕在宽和高的像素数量提高了整整一倍,所以之前非Retina屏幕上的一个像素渲染的内容在Retina屏幕上会用4个像素去渲染:1x1px(non Retina) = 2x2px(Retina)
,这样元素的内容就会变得精细,比如:
注意,Retina display
是苹果注册的命名方式,其他厂商只能使用HI-DPI
或者其他的命名方式,不过意思都是一样的,就是屏幕的PPI非常高。
DP/PT/SP
随 着移动设备屏幕PPI的不断提高,对于开发者来说以前用物理像素(Physical Pixel)来度量显示元素的方法已经不奏效了。为了解决这个问题,两大平台都提出了抽象像素的概念:iOS叫做PT(Point,显示 点),Android中叫做DP/DiP(Device independent Pixel,设备无关像素),如果没有特殊说明,以下统一用DP来进行描述。
举个例子,44x44dp的元素在非Retina屏幕中等于44x44px,在Retina屏幕中等于88x88px(变为4倍)。
SP(Scale-independent pixel)是缩放无关的像素,与DP和PT一样都是抽象像素,只不过用于描述字体的大小。
iOS中处理PPI
iOS中处理不同PPI显示的方法很简单:首先规定在多高的PPI下1DP等于1px,并以这个PPI作为基准(1x multiplier),如果显示设备的PPI是基准PPI的2倍,那么1DP等于2px(2x multiplier),其实就是简单的小学乘法。
在iPhone系列中,3G/S为1x multiplier,其他为2x multiplier:
在iPad系列中,iPad 1代和2代为1x multiplier,其他为2x multiplier:
在iPad Mini系列中,iPad Mini一代为1x multiplier,其他为2x multiplier:
在iOS中,同一个应用在非Retina屏幕和Retina屏幕显示的资源是不同的,其规则是: name.png
为非Retina资源,name@2x.png
为Retina资源,所以对于设计人员来说,在你设计的时候需要考虑到Retina屏幕和非Retina屏幕,看下面这个例子:
Android中处理PPI
由于Android系统是开放的系统,要适配的PPI非常多,所以它对PPI划分的非常细:
- ldpi (low) ~120dpi
- mdpi (medium) ~160dpi
- hdpi (high) ~240dpi
- xhdpi (extra-high) ~320dpi
- xxhdpi (extra-extra-high) ~480dpi
- xxxhdpi (extra-extra-extra-high) ~640dpi
你需要把对应dpi的资源放到对应的目录就可以了,Android会根据dpi自动选择资源,目录规则如下:
- drawable-mdpi/asset.png
- drawable-hdpi/asset.png
- drawable-xhdpi/asset.png
- ...
可以看出Android中mdpi与iOS中的1x multiplier所代表的PPI是一样的,xhdpi与iOS的2x multiplier所代表的PPI一样,如图:
参考
- http://sebastien-gabriel.com/designers-guide-to-dpi/home
- http://developer.android.com/guide/practices/screens_support.html
(完)
原文:http://weizhifeng.net/you-should-know-about-dpi.html
本文转自:移动开发需要知道的像素知识『多图』
相关推荐
通过以上知识点的学习,我们可以更好地掌握如何进行移动开发,特别是在H5页面的设计与优化方面。合理使用`meta`标签可以帮助我们有效地控制页面在不同设备上的表现;选择合适的字体和字体单位能够提升页面的整体美观...
总的来说,"像素鸟"这款游戏的开发涵盖了Android应用开发的多个方面,从基本的UI设计到复杂的物理模拟和动画实现,都需要开发者具备扎实的Java编程基础和对Android框架的深入理解。通过这个游戏,开发者可以提升自己...
下面我们将深入探讨矢量图标的相关知识点及其在移动开发中的应用。 **一、矢量图标的特性** 1. **可缩放性**:矢量图标基于数学公式和路径,而不是像素,因此可以无限放大而不失真,非常适合在不同分辨率和尺寸的...
总结起来,“超高分辨率图片下载”涵盖了网络传输、图片处理、前端优化、后端服务和存储管理等多个方面的知识点。理解和掌握这些技术,对于处理和展示这类高像素图片至关重要,无论是在开发高性能的图片应用,还是在...
首先,我们需要理解图标在移动开发中的角色。图标作为用户与应用程序交互的视觉元素,它们应该简洁明了,易于识别,同时也要具有一定的艺术性和独特性。在设计图标时,应遵循一致性、易理解、对比度适中和可触达性的...
在VC++6.0环境下开发地图浏览程序,主要涉及到Windows编程、GDI(Graphics Device ...在实际开发中,你可能还需要查阅更多的文档,学习相关API的使用,以及不断实践和调试,才能完成这个功能齐全的地图浏览程序。
综上所述,"DX图形移动"涉及到DirectX的多个核心概念和技术,开发者需要理解并掌握这些基础知识,才能有效地在Windows平台上开发出具有生动动态效果的应用程序。通过学习和实践,你将能够创建出各种复杂且引人入胜的...
这个“图片动态移动”的概念涉及到多个知识点,包括图像处理、编程语言的图形库、动画机制以及用户交互。 首先,我们来讨论图像处理。在计算机中,图片通常以像素矩阵的形式存储,通过编程语言可以对这些像素进行...
PNG图片素材在移动开发中的应用 ...总之,PNG图片素材在移动开发中扮演着核心角色,涉及图像质量、性能优化、用户体验等多个方面。开发者需要掌握如何有效地管理和优化PNG图片,以创建出高效、美观的应用。
它展示了易语言在游戏编程中的应用,包括图形绘制、事件处理、对象动态、随机数生成、碰撞检测等多个核心知识点。对于初学者来说,这是一个很好的实践平台,可以帮助他们理解游戏开发的基本流程和编程技巧。
在3D游戏开发中,数学知识扮演着至关重要的角色。本教程旨在为初学者提供一个简明快速的中文学习路径,帮助他们掌握3D游戏开发所必需的基础数学概念。以下是一些关键知识点的详细说明: 1. **向量(Vector)**:在...
综上所述,“750像素带小图预览的轮换效果”是一个结合了淘宝SDK、图片轮播技术、响应式设计、用户交互等多个方面知识的电商应用功能。通过理解和实践这些技术,开发者可以创建出更加直观、易用的商品展示界面,提升...
二维矢量图开发是计算机图形学的一个重要领域,它...总之,2D矢量图开发涉及C++编程、图形库的使用、数学知识以及用户交互等多个方面。通过VS6.0进行实践,可以加深对这些知识的理解,为今后的图形编程打下坚实基础。
要让位图在屏幕上移动,我们需要更新其位置坐标。 简单位图移动主要涉及坐标系统和时间管理。XNA使用笛卡尔坐标系,其中(0,0)位于屏幕左上角,x轴正方向向右,y轴正方向向下。位图的移动通常是通过在每帧渲染之前...
在"像素鸟"项目中,我们需要导入并管理小鸟的精灵图、背景图像、音效等资源,确保它们在游戏运行时能够正确加载和播放。 通过学习和实践"CocosCreator像素鸟"项目,新手开发者不仅可以熟悉Cocos Creator的基本操作...
标题和描述中提到的"j2ME手机移动开发技术角色扮演游戏"主要涉及到的是在早期智能手机时代,使用Java Micro Edition(j2ME)平台进行游戏开发的相关技术。j2ME是Java平台的一个子集,主要用于嵌入式设备和移动设备,...
这些API包含了绘制地图、处理缩放和移动事件等功能,使得开发人员能够轻松构建地图应用。 6. **地图交互**:地图查询是网络地图的重要特性,用户可以搜索地点、获取路线、查看地标等。这些交互功能通常通过...
VB像素渲染工具是一款基于Visual Basic(VB)编程语言开发的图形处理程序,它允许用户通过设置特定参数来创建和编辑图像。这个工具的核心功能在于像素级别的渲染,这意味着它可以精细地控制每个像素的颜色和属性,...
以上这些知识点涵盖了Android开发的基础和进阶技术,对于初学者来说,理解和掌握这些内容对于构建稳定、高效的移动应用至关重要。随着Android平台的不断发展,开发者还需要不断跟进最新的API和技术趋势,以确保应用...
在VC++编程环境中,涉及到图形处理时,我们经常会遇到需要移动图片位置的需求。...学习这个例子,不仅可以提升对图像处理的理解,还能掌握更多关于设备上下文、位图对象以及Windows消息处理的基础知识。