android屏幕分类与屏幕相关参数定义(转)

android设备运行在各种不同的屏幕中,这些屏幕有着不同的screen sizes(屏幕大小)和screen densities(屏幕密度)。screen sizes表示屏幕的实际物理大小,比如5寸手机,7寸平板,8寸平板。而screen densities表示屏幕的像素密度,比如同样5寸的手机,有720p的,有1080p的。screen sizes和screen densities从两个维度表示了屏幕的属性,他们互不影响。

Screen Sizes

屏幕的真实物理尺寸,以屏幕的对角线测量,一般以inch(寸)为单位,比如5寸手机,7寸平板。如下图所示:

根据不同的屏幕大小,可以把屏幕大小分为下面几种类型:

<喎?"http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KCnNtYWxsbm9ybWFsbGFyZ2V4bGFyZ2UKPGltZyBzcmM9"http://www.2cto.com/uploadfile/Collfiles/20140522/2014052209133874.jpg" alt="\">
这种分类方式是以第一部android手机G1为基准划分的,G1属于normal分类。随着android手机屏幕的尺寸大小越来越丰富,这种分类方式就显得简单粗暴,无法满足分类的精确度(比如5寸手机和7寸平板同属于large分类)。所以在android3.2以后就没有使用这种分类方式了,新的分类方式通过可用屏幕宽度来定义,在工程的资源文件中(如layout)使用,下面是一些例子: layout-sw600dplayout-sw720dp
values-sw340dp 这些分类的定义在后面会详细讲解,现在大家先有个概念。

Screen Densities

在讲screen densities前有几个概念需要理解:px,ppi,dpi,resolution。

1. px

px就是大家经常说的像素(pixel),像素是图像显示的基本单位,pixel由picture和element两个单词组合而成,有图像元素的意思,每个这样的信息元素是一个抽象的采样,经常以一个点或者方块表示。

2. ppi

ppi(pixels per inch)表示图像中每英寸的像素数,ppi会影响屏幕输出的质量,高的ppi在每英寸下包含的像素数多,显示效果更好。对于一张100 x 100像素的图片,100ppi的输出显示的大小为1" x 1"(1"表示1寸),在10ppi的输出显示的大小为10" x 10"。也就是说,同一张图片在不同ppi下显示的大小不一样,ppi越大,图片显得越小。

3. dpi

dpi(dots per inch)跟ppi是比较容易混淆的两个概念,dpi表示屏幕每英寸物理显示点的个数,物理显示点是屏幕的最小显示单元。假如图像输出与屏幕的显示点一一对应,即一个pixel在一个dot上显示,那么dpi的值等于ppi。但如果用一个1200dpi的屏幕全屏输出一个300ppi的图像,那这时每个pixel由16个dots组成。(dpi与ppi的关系)

4. resolution

resolution表示屏幕分辨率,以像素为单位表示,如屏幕分辨率为1920 x 1080,表示屏幕x,y方向分别可以显示1920和1080个像素点。分辨率在应用实现多屏适配的时候不起直接作用,多屏适配只与screen sizes和screen densities相关。 
对以上的几个概念有了初步认识后,下面我们来看screen densities的分类,在android中,screen densities是根据dpi来进行分类的,如下: ldpi(low)~120dpimdpi(medium)~160dpihdpi(high)~240dpixhdpi(extra high)~320dpixxhdpi(extra extra high)~480dpixxxhdpi (extra extra extra high)~640dpi...... 
为了简单,android根据dpi的值对screen densities进行了分类,每种分类包含了一个区域的dpi值,如上图所示。这种分类方式也是以第一部android手机G1为基准划分的,G1的dpi为160dpi,属于mdpi的分类。 
下面ppi的计算公式,ppi是pixels per inch的意思,设备的ppi用屏幕对角线中每inch的pixel数来表示,

比如nexus5手机,分辨率为1920 x 1080,屏幕大小为4.95寸,那么ppi的计算如下:

那屏幕的dpi如何计算了,如果是按照定义的话,公式跟ppi的计算公式是一样的,只需把像素数换成dot的数量,但是我们并不知道dot的数量是多少。不过,我们可以通过程序获取设备的dpi值,代码如下:

?


1

2

DisplayMetrics dm = getResources().getDisplayMetrics();

int dpi = dm.densityDpi;

通过上面代码获得的dpi=480,也就是说dpi不等于ppi,如果一个pixel用一个dot显示,按道理是应该相等的,但为什么会不等呢?这个我也还没搞清楚。不管怎样,要获取屏幕的dpi,不能用计算ppi的公式去计算获得,要从代码中去获取。

总结:

android设备的屏幕的差异通过两个维度来划分,screen sizes 和 screen densities,为了简单,android对不同的 screen sizes 和 screen densities做了归类。它们两者互不影响,一个表示屏幕的真实物理大小,一个表示屏幕的像素密度,这两者的不同组合构成了各种各样的设备屏幕。在对android应用做多屏适配时,它们是主要考虑的因素。

时间: 2024-08-03 06:23:14

android屏幕分类与屏幕相关参数定义(转)的相关文章

android屏幕分类与屏幕相关参数定义

android设备运行在各种不同的屏幕中,这些屏幕有着不同的screen sizes(屏幕大小)和screen densities(屏幕密度).screen sizes表示屏幕的实际物理大小,比如5寸手机,7寸平板,8寸平板.而screen densities表示屏幕的像素密度,比如同样5寸的手机,有720p的,有1080p的.screen sizes和screen densities从两个维度表示了屏幕的属性,他们互不影响. Screen Sizes 屏幕的真实物理尺寸,以屏幕的对角线测量,一

monkey script 用法和相关参数

前言:作者做为一个monkeyscript脚本的初次使用者,在写monkeyscript时发现很多资料讲解的不是很全,因此做比较全面的整理.有不对的地方多多指正,QQ:461087346 写monkeyscript的目的在于通过脚本实现一些有规律的操作,monkey是随机的事件操作无规律可以进行,虽然有随机种子,但是随机种子只能重复上次进行的步骤执行,不能进行有规律有计划的操作. monkey script的事件操作 1.点击事件(DispatchPointer) DispatchPointer

Jquery Validate 相关参数

Jquery Validate 相关参数 //定义中文消息 var cnmsg = { required: “必选字段”, remote: “请修正该字段”, email: “请输入正确格式的电子邮件”, url: “请输入合法的网址”, date: “请输入合法的日期”, dateISO: “请输入合法的日期 (ISO).”, number: “请输入合法的数字”, digits: “只能输入整数”, creditcard: “请输入合法的信用卡号”, equalTo: “请再次输入相同的值”

ym——Android如何支持多种屏幕

原文链接:http://developer.android.com/guide/practices/screens_support.html 支持多屏 Android涉及各种各样的支持不同屏幕尺寸和密度的设备.对于应用程序,Android系统通过设备和句柄提供了统一的开发环境,大部分工作是校正每一个应用程序的用户界面到它显示的屏上.与此同时,系统提供APIs允许你控制应用界面为特定的屏幕尺寸和密度,为不同屏幕的配置提供最优化的用户界面设计.例如,你可能会要一个平板电脑的用户界面,这不同于手机的用

Android知识梳理之屏幕适配全攻略

 引言: 我相信Android碎片化问题是让所有的Android开发者都比较头疼的问题.尤其是屏幕适配这一块儿.想要自己的app在不同的设备上面都有一个比较好的显示效果.就必须做好相应的屏幕适配.本文是结合网上的相关知识总结.官方文档结合自己的一些理解来进行阐述的.如有不恰当的地方,欢迎斧正.共同学习. 转载请标明出处:http://blog.csdn.net/unreliable_narrator/article/details/51315776 我们先来了解两个概念:屏幕尺寸和屏幕的分辨率:

ym——Android怎样支持多种屏幕

转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! 原文链接:http://developer.android.com/guide/practices/screens_support.html 支持多屏 Android涉及各种各样的支持不同屏幕尺寸和密度的设备.对于应用程序,Android系统通过设备和句柄提供了统一的开发环境.大部分工作是校正每个应用程序的用户界面到它显示的屏上.与此同一时候,系统提供APIs同意你控制应用界面为特定

android系统如何自适应屏幕大小

1.屏幕相关概念1.1分辨率是指屏幕上有横竖各有多少个像素1.2屏幕尺寸指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸android将屏幕大小分为四个级别(small,normal,large,and extra large).1.3屏幕密度每英寸像素数手机可以有相同的分辨率,但屏幕尺寸可以不相同,Diagonal pixel表示对角线的像素值(=),DPI=933/3.7=252android将实际的屏幕密度分为四个通用尺寸(low,medium,high,

Android:设计之屏幕适配

据统计目前市场Android手机的分辨率有是10余种,分辨率如此广泛使得我们在处理分辨率适应方便遇到不少难题,本文就此难点记录设计与实际布局中的解决技巧. 以320x480为蓝本设计布局 因为Android布局的时候一般用dp为单位,而我们设计的时候一般用px为单位,这涉及到单位转换问题,而在mdpi下,屏幕密度为160,px和dp是1:1关系,即1px =1dp(dpi/160), 所以为了更方便转换,在进行设计的时候,可以优先以mdpi,即320x480px为蓝本进行设计. 还有别忘了手机头

Android -- 距离感应器控制屏幕灭屏白屏

权限                                                                                             <uses-permission android:name="android.permission.DEVICE_POWER"/> <uses-permission android:name="android.permission.WAKE_LOCK"/>