android disp densityensity是什么意思

android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )屏幕适配
查询到运行的system service后,就可以在dumpsys后面加上service的名字,查看指定的service信息。
adb shell dumpsys activity
adb shell dumpsys cpuinfo
adb shell dumpsys battery
adb shell dumpsys window(最后部分可以看到分辨率的信息)===== -----------------------------------------------------------
<span style="font-size:14 color:# Android手机目前常见的分辨率 4:3
VGA & & 640*480 (Video Graphics Array)
QVGA &320*240 (Quarter VGA)
HVGA &480*320 (Half-size VGA)
SVGA &800*600 (Super VGA)
WVGA &800*480 (Wide VGA)
FWVGA 854*480 (Full Wide VGA)
HD & & & & High Definition
QHD & & 960*540
<span style="color:#ccp & & &标清 1080p & 高清
1.2 分辨率对应DPI
&HVGA & &mdpi&
&WVGA & hdpi &
&FWVGA hdpi &
&QHD & & &hdpi &
&720P & & xhdpi& &1080P & xxhdpi & & & &=======》看清
2 屏幕适配的注意事项
<span style="color:#.1.1 AndroidManifest.xml设置
在中Menifest中添加子元素
android:anyDensity=&true&时,应用程序安装在不同密度的终端上时,程序会分别加载xxhdpi、xhdpi、hdpi、mdpi、ldpi文件夹中的资源。相反,如果设为false,即使在文件夹下拥有相同资源,应用不会自动地去相应文件夹下寻找资源:
1) 如果drawable-hdpi、drawable-mdpi、drawable-ldpi三个文件夹中有同一张图片资源的不同密度表示,那么系统会去加载drawable_mdpi文件夹中的资源;
2) 如果drawable-hpdi中有高密度图片,其它两个文件夹中没有对应图片资源,那么系统会去加载drawable-hdpi中的资源,其他同理;
3) 如果drawable-hdpi,drawable-mdpi中有图片资源,drawable-ldpi中没有,系统会加载drawable-mdpi中的资源,其他同理,使用最接近的密度级别。
<span style="color:#cc.2 横屏竖屏目录区分
1) drawable
a) drawable-hdpi该图片即适用于横屏,也适用于竖屏;
b) drawable-land-hdpi,当屏幕为横屏,且为高密度时,加载此文件夹的资源;
c) drawable-port-hdpi,当屏幕为竖屏,且为高密度时,加载此文件夹中的资源。其他同理。
在res目录下建立layout-port和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件,以适应对横屏竖屏自动切换。
<span style="color:#cc 多屏幕适配的4条黄金原则
1) 在layout文件中设置控件尺寸时应采用fill_parent、wrap_content、match_parent和dp;
具体来说,设置view的属性android:layout_width和android:layout_height的值时,wrap_content,match_parent或dp比px更好,文字大小应该使用sp来定义。
2) 在程序的代码中不要出现具体的像素值,在dimens.xml中定义;
为了使代码简单,android内部使用pix为单位表示控件的尺寸,但这是基于当前屏幕基础上的。为了适应多种屏幕,android建议开发者不要使用具体的像素来表示控件尺寸。
3) 不使用AbsoluteLayout(android1.5已废弃) ,可以使用RelativeLayout替代;
4) 对不同的屏幕提供合适大小的图片。
不同大小屏幕用不同大小的图片,low:medium:high:extra-high图片大小的比例为3:4:6:8;举例来说,对于中等密度(medium)的屏幕你的图片像素大小为48&48,那么低密度(low)屏幕的图片大小应为36&36,高(high)的为72&72,extra-high为96&96。
2.3 使用9-patch PNG图片
使用图片资源时,如果出现拉伸,因为图片处理的原因,会变形,导致界面走形。9-patch PNG图片也是一种标准的PGN图片,在原生PNG图片四周空出一个像素间隔,用来标识PNG图片中哪些部分可以拉伸、哪些不可以拉伸、背景上的边框位置等。
“上、左”定义可拉伸区域
“右、下”定义显示区域,如果用到完整填充的背景图,建议不要通过android:padding来设置边距,而是通过9-patch方式来定义。
Android SDK中提供了编辑9-Patch图片的工具,在tools目录下draw9patch.bat,能够立刻看到编辑后的拉伸效果,也可以直接用其他图片编辑工具编辑,但是看不到效果。
2.4 不同的layout
Android手机屏幕大小不一,有480x320, 640x360, 800x480……
怎样才能让Application自动适应不同的屏幕呢?
其实很简单,只需要在res目录下创建不同的layout文件夹,比如:layout-640x360、layout-800x480……所有的layout文件在编译之后都会写入R.java里,而系统会根据屏幕的大小自己选择合适的layout进行使用。
总结:最好在mainifest里面添加
&!--对于很高的分辨率,除采用相应的图片外,还需要加上如下配置,来更好的适配屏幕 --& & & &supports-screens & & & & android:smallScreens=&true& & & & & android:normalScreens=&true& & & & & android:largeScreens=&true& & & & & android:anyDensity=&true& /&
in 表示英寸,是屏幕的物理尺寸。每英寸等于2.54厘米。例如我们经常说的手机屏幕大小有,5(英)寸、4(英)寸就是指这个单位。这些尺寸是屏幕的对角线长度。如果手机的屏幕是4英寸,表示手机的屏幕(可视区域)对角线长度是4 X 2.54 = 10.16厘米 dpi dpi是Dots Per Inch的缩写, 每英寸点数,即每英寸包含像素个数。比如320X480分辨率的手机,宽2英寸,高3英寸, 每英寸包含的像素点的数量为320/2=160dpi(横向)或480/3=160dpi(纵向),160就是这部手机的dpi,横向和纵向的这个值都是相同的,原因是大部分手机屏幕使用正方形的像素点。 density 屏幕密度,density和dpi的关系为 density = dpi/160 dp 也即dip,设备独立像素,device independent pixels的缩写,Android特有的单位,在屏幕密度dpi = 160屏幕上,1dp = 1px。 sp 和dp很类似,一般用来设置字体大小,和dp的区别是它可以根据用户的字体大小偏好来缩放。 Android Drawable 我们新建一个Android项目后应该可以看到很多drawable文件夹,分别对应不同的dpi drawable-ldpi (dpi=120, density=0.75) drawable-mdpi (dpi=160, density=1) drawable-hdpi (dpi=240, density=1.5) drawable-xhdpi (dpi=320, density=2) drawable-xxhdpi (dpi=480, density=3) 市面上的一些Android教程大多都是教的是为每种dpi都出一套图片资源,这个固然是一种解决办法,但同时也是一种非常笨的方法,为美工或者设计增加了不少的工作量不说,同时也会让你的apk包变的很大。那么有没有什么好的方法既能保证屏幕适配,又可以最小占用设计资源,同时最好又只使用一套dpi的图片资源呢? 首先必须清楚一个自动渲染的概念,Android SDK会自动屏幕尺寸选择对应的资源文件进行渲染,如SDK检测到你手机dpi是160的话会优先到drawable-mdpi文件夹下找对应的图片资源,注意只是优先,假设你手机dpi是160,但是你只在xhpdi文件夹下有对应的图片资源文件,程序一样可以正常运行。所以理论上来说只需要提供一种规格的图片资源就ok了,如果只提供ldpi规格的图片,对于大分辨率的手机如果把图片放大就会不清晰,所以需要提供一套你需要支持的最大dpi的图片,这样即使用户的手机分辨率很小,这样图片缩小依然很清晰。 xhdpi成为首选 上面说了只需要提供一套大的dpi的图片就ok了,现在市面手机分辨率最大可达到的分辨率,如Nexus5,dpi属于xxhdpi,但是毕竟还没普及,目前市面上最普遍的高端机的分辨率还多集中在720X1080范围,也就是多集中在xhdpi,所以目前来看xhpdi规格的图片成为了首选。当然随着技术规格的提高以后发展,以后可能市场上xxdpi的手机会越来越普遍,但这是后话。 &设计资源紧张怎么办? 在现在的App开发中,基本都会有iOS和Android版本,有些公司为了保持App不同版本的体验交互一致,还有些公司的设计资源可能比较紧张,这些情况下iOS和Android版本基本是一个设计师主导,而大多数情况下设计师可能更会以iPhone手机为基础进行设计,包括后期的切图之类的。这个时候身为Android开发人员你是否还要求设计师单独为Android端切一套图片资源呢?这会让你们的设计师崩溃的,下面就来告诉一个项目中总结的更棒的方法。 相信设计师们一般都会用最新的iPhone5(5s和5的尺寸以及分辨率都一样)来做原型设计,而iPhone5的屏幕分辨率为640X1164, 屏幕尺寸为4英寸,根据勾股定理(a^2 + b^2 = c^2)640^2+4496, 然后再对其开根号可求出屏幕对角线的分辨率为:1328,除以4可得出iphone5的dpi:2 可以看出iPhone5的屏幕的dpi约等于320, 刚好属于xhdpi,所以你可以很自豪的像你们的设计师说不用专门为Android端切图,直接把iPhone的那一套切好的图片资源放入drawable-xhdpi文件夹里就ok了。
本分类共有文章54篇,更多信息详见
& 2012 - 2014 &
&All Rights Reserved. &
/*爱悠闲图+*/
var cpro_id = "u1888441";
/*爱悠闲底部960*75*/
var cpro_id = "u1888128";Android中的lcd_density设置_Linux编程_Linux公社-Linux系统门户网站
你好,游客
Android中的lcd_density设置
来源:Linux社区&
作者:guoshaobei
在/system/build.prop中设置:
对于HVGA屏,设置ro.sf.lcd_density=160
对于WVGA屏,设置ro.sf.lcd_density=240
下文对于lcd_density的设置讲解的很清楚。
我的是800x600的屏,在 的Notifications没有达到满屏幕宽度
原以为就是xml布局文件的问题,直接找到确定其布局的文件status_bar_expanded.xml,发现并无异样,也就是并非是此问题导致。由于经常使用emulator,一个偶尔的机会发现,我自己建立的avd设备也没有达到宽度满屏,但官方内置的几个skins却是可以。看来这里面肯定有差别。在进入到sdk的skins的目录。发现有一硬件配置文件:hardware.ini,里面记载着hw.lcd.density=240,如下
回头看看我自定义的avd设备,density为160。尝试性的,我把自定义的density改为240。果然发现,Notifications竟然也能满屏了。density究竟是何物。在官方的网站上有如下定义:
Based on the screen resolution, the spread of pixels across the physical width and height of the screen.
A screen with lower density has fewer available pixels spread across the screen width and height, where a screen with higher density has more — sometimes significantly more — pixels spread across the same area. The density of a screen is important because, other things being equal, a UI element (such as a button) whose height and width are defined in terms of screen pixels will appear larger on the lower density screen and smaller on the higher density screen.
For simplicity, Android collapses all actual screen densities into three generalized densities: high, medium, and low. Applications can provide custom resources for each of these three densities — the platform handles the scaling of the resources up or down to meet the actual screen density.
再来到相关的源码部分,看系统式如何设置density的。
Density获取的部分在DisplayMetrics.java这个类里面,如果SDK文档中所说的,系统定义了3个等级的density,分别是low-120,medium-160,high-240。
1& public&& class&& DisplayMetrics&& { 2&&&&&&&&& /* * 3&&&&&&&&&&& *&& Standard&& quantized&& DPI&& for&& low-density&& screens. 4&&&&&&&&&&& */ 5&&&&&&&&& public&& static&& final&& int&& DENSITY_LOW&& =&& 120 ; 6& 7&&&&&&&&& /* * 8&&&&&&&&&&& *&& Standard&& quantized&& DPI&& for&& medium-density&& screens. 9&&&&&&&&&&& */ 10&&&&&&&& public&& static&& final&& int&& DENSITY_MEDIUM&& =&& 160 ; 11 12&&&&&&&& /* * 13&&&&&&&&&& *&& Standard&& quantized&& DPI&& for&& high-density&& screens. 14&&&&&&&&&& */ 15&&&&&&&& public&& static&& final&& int&& DENSITY_HIGH&& =&& 240 ; 16 17&&&&&&&& /* * 18&&&&&&&&&& *&& The&& reference&& density&& used&& throughout&& the&& system. 19&&&&&&&&&& */ 20&&&&&&&& public&& static&& final&& int&& DENSITY_DEFAULT&& =&& DENSITY_MEDIUM; 21&&&&&&&& 22&&&&&&&& . . . .
同时,代码中把160的Density设置为默认的Density,也就是当前,机器中的Density。那如何设置这个Density。同样在这个类最下面,找到系统获取Density的方法:
1 private&& static&& int&& getDeviceDensity()&& { 2&&&&&&&&&&&&&&&& //&& qemu.sf.lcd_density&& can&& be&& used&& to&& override&& ro.sf.lcd_density 3&&&&&&&&&&&&&&&& //&& when&& running&& in&& the&& emulator,&& allowing&& for&& dynamic&& configurations. 4&&&&&&&&&&&&&&&& //&& The&& reason&& for&& this&& is&& that&& ro.sf.lcd_density&& is&& write-once&& and&& is 5&&&&&&&&&&&&&&&& //&& set&& by&& the&& init&& process&& when&& it&& parses&& build.prop&& before&& anything&& else. 6&&&&&&&&&&&&&&&& return&& SystemProperties . getInt( " qemu.sf.lcd_density " , 7&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& SystemProperties . getInt( " ro.sf.lcd_density " ,&& DENSITY_DEFAULT)); 8&&&&&&&& }
从这个方法中可以看到,系统会去读系统的属性。先去读ro.sf..lcd_density,若存在,那么设置这个属性记录的density的值。否则,则取默认值也就是160。看来我源码的属性中并没有设置这一density的值。这个值在源码中的system.prop中修改
由于我不想重新编译系统。所以,我直接在编译好的build.prop中加上
ro.sf.lcd_density=240
重启测试,发现果然,屏幕的分辨率发生了变化,且Notification也全屏了。
觉得240的图标都太大了,我重新设置到200。(试验过在我的800x600的屏上,低于200,都不能使之满屏)
此方法也使用于当你机器玩游戏不满屏的情况。把这个density设置低一点,那么就能满屏玩了。
对于手机用户,使用adb shell连接到手机,取得root权限后修改ro.sf.lcd_density的值就能达到效果
另一种方法:
当然,如果你想保证你的Density不变,那可以只修改CompatibilityInfo.java这个文件,把DEFAULT分辨率的值改成当前的屏幕分辨率,我的是800x600的,于是改成:
1&&&&&&&&& /* * 2&&&&&&&&&&& *&& The&& default&& width&& of&& the&& screen&& in&& portrait&& mode.&& 3&&&&&&&&&&& */ 4& //&&&&&&&& public&& static&& final&& int&& DEFAULT_PORTRAIT_WIDTH&& =&& 320; 5&&&&&&&&& public&& static&& final&& int&& DEFAULT_PORTRAIT_WIDTH&& =&& 600 ; 6&&&&&&&&& /* * 7&&&&&&&&&&& *&& The&& default&& height&& of&& the&& screen&& in&& portrait&& mode.&& 8&&&&&&&&&&& */&&&&&&&& 9& //&&&&&&&& public&& static&& final&& int&& DEFAULT_PORTRAIT_HEIGHT&& =&& 480; 10&&&&&&&& public&& static&& final&& int&& DEFAULT_PORTRAIT_HEIGHT&& =&& 800 ;
相关资讯 & & &
& (02/07/:43)
& (02/06/:37)
& (11/26/:48)
& (02/06/:20)
& (02/01/:36)
& (11/19/:23)
图片资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款
aaron 发表于 楼主,我现在也是800*480的屏,设置ro.sf.lcd_density = 160时,重启后listView中间有一条蓝线,不知为何,请赐教。屏幕密度与分辨率的疑问?最近看android,上面两个概念混了,网上那些解释看了相互矛盾,看不懂;1.“Density的意思是“密度”。密度,就是说单位面积内的容量大小。”那单位应该是在一_百度作业帮
屏幕密度与分辨率的疑问?最近看android,上面两个概念混了,网上那些解释看了相互矛盾,看不懂;1.“Density的意思是“密度”。密度,就是说单位面积内的容量大小。”那单位应该是在一
屏幕密度与分辨率的疑问?最近看android,上面两个概念混了,网上那些解释看了相互矛盾,看不懂;1.“Density的意思是“密度”。密度,就是说单位面积内的容量大小。”那单位应该是在一个平方单位上有多少个pixel吧?怎么有资料说说“density值表示每英寸有多少个显示点,与分辨率是两个概念。”2.还有,资料说WVGA屏幕(480*800)的density为240,这个240的数字是怎么来的,如果是规定这样的话那又知道了(480*800),岂不是确定了屏幕尺寸了(如宽就是480/240=2,高800/240=3.3,不是这样吧?)3.从百度百科查“分辨率”,都有个“率”字了,应该是单位长度的pixel吧?即PPI,pixel per inch,例如“320*480”,引号内的这两个数不能叫“分辨率”吧,应该是“总像素值”吧?PPI应该是它们的平方和的开放再除以屏幕尺寸(如常说的手机有4英寸),不知我的理解对不对?别复制别处答案过来,求个人深刻理解的回答。
其实分辨率和密度在这里是一个概念。分辨率一般是说屏幕上的格子有多少 ,即横向多少格、纵向多少格,两者相乘就是总数。就是总像素。密度是说单位面积上的格子有多少格。一般是 PPI,即每平方英寸内多少点。就是单位面积上的像素 。其实就是概念炒作。...
看你的问题都长知识了,同等专家级回复!
扫描下载二维码android计算pad或手机的分辨率/像素/密度/屏幕尺寸/DPI值的方法
字体:[ ] 类型:转载 时间:
本文将介绍手机布局/界面设计/分辨率/密度相关,接下来介绍android计算pad或手机的分辨率像素等等的方法,感兴趣的朋友可以了解下,希望本文可以帮助你
手机分辨率基础知识(DPI,DIP计算)
1.术语和概念
Screen size(屏幕尺寸)
指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸
摩托罗拉milestone手机是3.7英寸
Aspect Ratio(宽高比率)
指的是实际的物理尺寸宽高比率,分为long和nolong
Milestone是16:9,属于long
Resolution(分辨率)
和电脑的分辨率概念一样,指手机屏幕纵、横方向像素个数
Milestone是854*480
DPI(dot per inch)
每英寸像素数,如120dpi,160dpi等,假设QVGA(320*240)分辨率的屏幕物理尺寸是(2英寸*1.5英寸),dpi=160
可以反映屏幕的清晰度,用于缩放UI的
Density(密度)
屏幕里像素值浓度,resolution/Screen size可以反映出手机密度,
Density-independent pixel (dip)
指的是逻辑密度计算单位,dip和具体像素值的对应公式是dip/pixel=dpi值/160,也就是px = dp * (dpi / 160)
2. DPI值计算
比如:计算WVGA(800*480)分辨率,3.7英寸的密度DPI,如图1所示
&&&&&&&&&&&&&&&图1&
Diagonal pixel表示对角线的像素值(=),DPI=933/3.7=252
3.手机屏幕的分类3.1根据手机屏幕密度(DPI)或屏幕尺寸大小分为以下3类,如图2所示
&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&& 图2
3. 2手机屏幕分类和像素密度的对应关系如表1所示:
Low density (120), ldpi
Medium density (160), mdpi
High density (240), hdpi
Small screen
QVGA (240x320)
Normal screen
WQVGA400 (240x400)WQVGA432 (240x432)
HVGA (320x480)
WVGA800 (480x800)WVGA854 (480x854)
Large screen
WVGA800* (480x800)WVGA854* (480x854)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&表1
3.3手机尺寸分布情况()如图3所示,目前主要是以分辨率为800*480和854*480的手机用户居多
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&图3
&& 从以上的屏幕尺寸分布情况上看,其实手机只要考虑3-4.5寸之间密度为1和1.5的手机
从开发角度讲,应用程序会根据3类Android手机屏幕提供3套UI布局文件,但是相应界面图标也需要提供3套,如表2所示
Standard Asset Sizes (in Pixels), for Generalized Screen Densities
Low density screen (ldpi)
Medium density screen (mdpi)
High density screen (hdpi)
36 x 36 px
48 x 48 px
72 x 72 px
36 x 36 px
48 x 48 px
72 x 72 px
Status Bar
24 x 24 px
32 x 32 px
48 x 48 px
24 x 24 px
32 x 32 px
48 x 48 px
24 x 24 px
32 x 32 px
48 x 48 px
24 x 24 px
32 x 32 px
48 x 48 px
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&表2
5 如何做到自适应屏幕大小呢?
1)界面布局方面&
&& 需要根据物理尺寸的大小准备5套布局,layout(放一些通用布局xml文件,比如界面中顶部和底部的布局,不会随着屏幕大小变化,类似windos窗口的title bar),layout-small(屏幕尺寸小于3英寸左右的布局),layout-normal(屏幕尺寸小于4.5英寸左右),layout-large(4英寸-7英寸之间),layout-xlarge(7-10英寸之间)
2)图片资源方面&
&&需要根据dpi值准备5套图片资源,drawable,drawalbe-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi
Android有个自动匹配机制去选择对应的布局和图片资源
手机的分辨率&像素 密度和 屏幕尺寸是我们经常听到的字眼,它们之间的关系如下:
分辨率是指屏幕上有横竖各有多少个容器点,每个容器点是用于容纳一个像素的。
像素严格来说是指用于图片上的,图片上的像素点越多,图片就越显的清晰,当然也会越大。
手机可以有相同的分辨率,但屏幕尺寸可以不相同,例如3.7英寸的屏幕可以是320*480的分辨率,5.1英寸的屏幕也可以是320*480的分辨率,那这2个屏幕在显示时有什么区别呢?
举个例子:如果A手机屏幕宽度是5CM,B手机宽度是10Cm,宽度分辨率都是320,那么显示同一张图片时,B手机上的图片就会显的大一点,并且没有A手机上的清晰。为什么呢,这就是我们常见的密度(DPI)概念,即每英寸多少个点。本身一行5CM有320个点,DPI大约是150,现在是一行10CM有320个点,密度大约是75。密度大为减少,所以B手机显示的图片会变大,不清晰。就像我们使用Android Screen Monitor在电脑上显示手机屏幕一样,总感觉在电脑上显示时有点大,这就是因为你电脑的分辨率密度没有手机的分辨率密度大导致的,可以把电脑的分辨率调大一点让电脑屏幕密度和手机密度一致。
换算方式:
72像素/英寸=28.346像素/厘米
300像素/英寸=118.11像素/厘米
1 厘米=0.3937 英寸
1 英寸=2.54 厘米
像素不能直接换算成英寸、厘米,要在dpi下才能换算!
以常见1024像素对比:
1024像素=3.413英寸=8.67厘米&&&&&&& (300像素/英寸dpi&&& 每英寸≈0.003333像素),所以1024像素的厘米尺寸就是:333*2.54
1024像素=14.222英寸=36.12厘米&& (72像素/英寸dpi&&& 每英寸≈0.013889像素),所以1024像素的厘米尺寸就是:889*2.54
&&& 提起分辨率,我们需要了解两个概念,图像分辨率和输出分辨率。
&&& 图像分辨率是每英寸的像素数,以ppi为单位,图像分辨率又常常被表示成每一个方向上的总像素数量,比如640×480像素、像素等。而决定图像输出质量的是图像的输出分辨率,描述的是设备输出图像时每英寸可产生的点数(dpi),以dpi为单位,两者有联系但并不总是相等的。
dpi (dot per inch)输出分辨率
&&& 打印机分辨率又称为输出分辨率,是指在打印输出时横向和纵向两个方向上每英寸最多能够打印的点数,通常以“点/英寸”即dpi(dot per inch)表示。而所谓最高分辨率就是指打印机所能打印的最大分辨率,也就是所说的打印输出的极限分辨率。平时所说的打印机分辨率一般指打印机的最大分辨率,目前一般激光打印机的分辨率均在600×600dpi以上。
&&& dpi是“dot per inch”的缩写。顾名思义,就是指在每英寸长度内的点数。通常,我们都使用dpi来作为扫描器和打印机的解析度单位,数值越高表示解析度越高。目前,市面上出售扫描器的光学解析度主要有600×1200 dpi和 dpi两种。扫描器的光学解析度由两个数字构成,是因为横向解析度和纵向解析度不同。较小的数字通常为纵向解析度,即我们一般区分扫描器解析度用的数值。也就是说,600×1200 dpi的扫描器,我们通常简称为600 dpi。
&&& 电脑显示器的解析度约为72dpi,这个数值其实是这样计算出来的:以一部15寸的电脑显示器为例,可视面积的水平长度大约为11.2寸,如果显示模式是800×600,那么解析度就是800/11.2=71.4。如果是17寸电脑显示器,以的显示模式来看,解析度就变成=80了。
像素(Pixel)
&&& 对于计算机的屏幕设备而言,像素(Pixel)或者说px是一个最基本的单位,就是一个点。其它所有的单位,都和像素成一个固定的比例换算关系。所有的长度单位基于屏幕进行显示的时候,都统一先换算成为像素的多少,然后进行显示。所以,就计算机的屏幕而言,相对长度和绝对长度没有本质差别。任何单位其实都是像素,差别只是比例不同。
&&& 如果把讨论扩展到其它输出设备,比如打印机,基本的长度单位可能不是像素,而是其它的和生活中的度量单位一致的单位了。
&&& CSS绝对长度单位是对于输出设备(output device)而言的。拿pt来说,这是一个在文字排版工具(word,adobe等)中非常常用的字体单位,不管你的显示器分辨率是,还是800*600,同一篇文档打印在纸面上的结果是一样的。
&&& 写网页用哪个长度单位更好,是px还是pt呢?
&&& 我个人比较偏向px,因为px能够精确地表示元素在屏幕中的位置和大小,网页主要是为了屏幕显示,而不是为了打印等其它需要的。
CSS相对长度单位(relative length unit)
&&& CSS相对长度单位中的相对二字,表明了其长度单位会随着它的参考值的变化而变化,不是固定的。以下是CSS相对长度单位列表:
&&&&CSS相对长度单位
&&& 说明:
&&& em&&&&元素的字体高度The height of the element s font
&&&&ex&&&&字母x的高度The height of the letter "x"
&&&&px&&&&像素Pixels
&&&&%&&&&百分比Percentage
CSS绝对长度单位(absolute length unit)
&&& 绝对长度单位是一个固定的值。比如我们常用的有mm,就是毫米的意思。以下是CSS绝对长度单位列表:
&&& CSS绝对长度单位
&&& in&&&&&&英寸Inches (1英寸&= 2.54&厘米)
&&& cm&&&&厘米Centimeters
&&& mm&&毫米Millimeters
&&& pt&&&&点Points (1点&= 1/72英寸)
&&& pc &&&皮卡Picas (1皮卡&= 12&点)
&&& 像素是相对于显示器屏幕分辨率而言的。譬如,WiNDOWS的用户所使用的分辨率一般是96像素/英寸。而MAC的用户所使用的分辨率一般是72像素/英寸。所以在WiNDOWS的CSS中dpi为&96像素/英寸。
另附上对照表:
常见照片尺寸、像素及打印尺寸对照表(实用)
数码相机类型
分辨率:300dpi
2.5×3.5cm
身份证大头照
3.5×5.3cm
小2寸(护照)
4.8×3.3cm
15.2×10.2
17.8×12.7
20.3×15.2
25.4×20.3
12寸12×10
30.5×20.3
15寸15×10
38.1×25.4
最近做项目发现,同样的分辨率2台机器,某个界面的样式就是不一样,经过多次测试发现,原来第一台pad(lenovo A1_07)的密度为1.5,转换成dpi是240,属于高密度;另一台pad的密度为1,属于中等密度,转换成dpi就是160,应该属于中等密度&这就发现问题了, 解决方法:&应该在values文件夹下面分别放置values-hdpi, values-mdpi分别对应的样式,就OK了&以下是学习资料&screen resolution&把设备上的物理dpi 用乘法转换成 dips&Androidname&& approx. resolution&& multiply by this get dips&ldpi&&&&&&&&& ~120 dpi&&&&&&&&&&&&& 1.333&mdpi&&&&&&&&& ~160 dpi&&&&&&&&&&&&& 1.0 (基线密度)&tvdpi&&&&&&& ~213 dpi&&&&&&&&&&&&&& 0.751&hdpi&&&&&&&& ~240 dpi&&&&&&&&&&&&&& 0.67&xhdpi&&&&&&& ~320 dpi&&&&&&&&&&&&&& 0.5&dpi:每英寸像素数(密度*160)&density:密度&手机像素密度(density)实际上是以单位英寸160个像素作为参考标准,主要密度有0.75,1,1.5和2,当密度为2时就表示1英寸有320个像素,Android中通过代码可以获取到屏幕的像素值和密度,根据这些值就可以反向算出屏幕的物理尺寸&屏幕尺寸=屏幕对角线的像素值/(密度*160)=& [(长的平方+宽的平方)开根号] / (密度*160)&&实践过程:&由于Android设备中获取的密度density本身是个约等于的数值,比如计算出密度的准确值density=1.575,实际在代码中读到的density=1.5, 需要实现一个简单的计算屏幕尺寸的应用在不同设备上验证物理尺寸准确程度,具体代码如下:&DisplayMetrics metric = new DisplayMetrics();&&&&&&&& getWindowManager().getDefaultDisplay().getMetrics(metric);&&&&&&&& int width = metric.widthP& // 屏幕宽度(像素)&&&&&&&& int height = metric.heightP& // 屏幕高度(像素)&&&&&&&& float density = metric.& // 屏幕密度(0.75 / 1.0 / 1.5)&&&&&&&& int densityDpi = metric.densityD& // 屏幕密度DPI(120 / 160 / 240)&&&&&&& double diagonalPixels = Math.sqrt(Math.pow(width, 2)+Math.pow(height, 2)) ;&double screenSize = diagonalPixels/(160*density) ;&有可能上面的计算屏幕的尺寸不是太准确
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具}

我要回帖

更多关于 android densitydpi 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信