`
zzmccnu
  • 浏览: 73962 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

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

阅读更多

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

 

名词

解释

Px

(Pixel像素)

不同设备显示效果相同。这里的“相同”是指像素数不会变,比如指定UI长度是100px,那不管分辨率是多少UI长度都是100px。也正是因为如此才造成了UI在小分辨率设备上被放大而失真,在大分辨率上被缩小。

Screen Size

(屏幕尺寸)

一般所说的手机屏幕大小如1.6英寸、1.9英寸、2.2英寸,都是指的对角线的长度,而不是手机面积。我们可以根据勾股定理获取手机的宽和长,当然还有面积。

Resolution

(分辨率)

指手机屏幕垂直和水平方向上的像素个数。比如分辨率是480*320,则指设备垂直方向有480个像素点,水平方向有320个像素点。

Dpi

(dots per inch

  像素密度)

指每英寸中的像素数。如160dpi指手机水平或垂直方向上每英寸距离有160个像素点。假定设备分辨率为320*240,屏幕长2英寸宽1.5英寸,dpi=320/2=240/1.5=160

注意:该值对应于DisplayMetrics类中属性densityDpi的值。具体请参考http://www.cnblogs.com/wader2011/archive/2011/11/28/2266669.html

Density

(密度)

指每平方英寸中的像素数。

Density=Resolution/Screen size

注意:在DisplayMetrics类中属性density的值为dpi/160,可用于pxdip的互相转换。具体请参考http://www.cnblogs.com/wader2011/archive/2011/11/28/2266684.html

Dip

(Device-independent pixel,设备独立像素)

同dp,可作长度单位,不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。dip和具体像素值的对应公式是dip =设备密度/160* pixel,可以看出在dpi(像素密度)为160dpi的设备上1px=1dip

Sp

(ScaledPixels

 放大像素)

主要用于字体显示(best for textsize)。根据 google 的建议,TextView 的字号最好使用 sp 做单位,而且查看TextView的源码可知 Android 默认使用 sp 作为字号单位。

总结

我们可以用下面的思路来解释为什么用dip代替px作单位:

  1. 设备最终会以px作为长度单位。
  2. 如果我们直接用px作为单位会造成UI在不同分辨率设备上出现不合适的缩放。因此我们需要一种新的单位,这种单位要最终能够以合适的系数换算成px使UI表现出合适的大小。
  3. Dip符合这种要求吗?

由dip和具体像素值的对应公式dip值 =设备密度/160* pixel值 可以知

pixel值=dip值/(设备密度/160)其中dip值是我们指定的长度大小,那么pixel值,160也是定植,也就是说UI最终的pixel值只受像素密度dip的影响,这个dip就相当于那个换算系数,这个系数的值是多少有设备商去决定。因此dip符合这种要求。

分享到:
评论

相关推荐

    修改系统density、densityDpi适配

    文章目录一、简述二、追根溯源三、实现3.1 定义Density用于对系统类值的修改3.2 在MainActivity中调用3.3 处理应用程序关于字体大小的监听3.4 如果多界面统一处理怎么办?3.4.1 BaseActivity3.4.2 监听应用程序的...

    android手机分辨率 密度 等各种信息

    android手机分辨率 密度 等各种信息 String str = " 手机屏幕分辨率为: " + widthPixels + "*" + ... " 屏幕密度DPI(每寸像素:120/160/240/320): " + densityDpi + "r ydpi: " + ydpi + " xdpi: " + xdpi ;

    关于meta viewport中target-densitydpi属性详解(推荐)

    但发现页面依旧不根据手机屏幕进行自动缩放,后来找其他同事帮忙解决了,我看了源代码发现了是在原来的viewport中增加了target-densitydpi属性。看之初不太了解,也因为当时自己手上有其他需求在处理,最近突然想起...

    Development.apk(Android Dev Tools)

    3.14 densityDpi=240(密度分辨率=240) 3.15 heightPixels=800(高度像素=800) 3.16 scaledDensity=1.5(尺度密度=1.5) 3.17 widthPixels=480(宽度分辨率=480) 3.18 xdpi=240.0(x轴分辨率=240.0) 3.19 ydpi=240.0(y轴...

    30条android项目开发技巧与经验总结

    1、如果是阅读型文本(例如一篇文章),不需要固定大小的,textSize可以使用sp...UI有时会根据iPhone机型使用750px*1334px作图,而按照1dp=2px来算,其结果为(375dp*667dp)。这样放置控件,宽度上会少15dp,高度上会

    CSS自适应布局思路

    meta name=”viewport” content=”width=device-width,target-densitydpi=high-dpi,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no”/> css中的整体布局 CSS Code复制内容到剪贴板...

    mobileUtil:mobileUtil

    meta name="viewport" content="target-densitydpi=device-dpi,width=750">,该方法会获取width,并自动计算scale值设置缩放 ####关于rem方法 #####如果使用rem做适配,则任何弹性尺寸均使用 rem 作为单位 当前...

    游戏源码游戏游戏游戏游戏游戏游戏

    , user-scalable=no, minimum-scale=1.0, maximum-scale=1.0, width=device-width,target-densitydpi=device-dpi"/> <script type="text/javascript" src="js/jquery.min.js"></script> ...

    AJax java 源码学习

    分九个章节,包函一般WEB页所需的各种的功能,很有参考性。非常适应于初学者。

    GIS基础知识与理论学习

    一篇来源于北大的GIS课程,很值GIS初学者学习。欢迎阅读学习。

    怎样实现H5+CSS3手指滑动切换图片的示例代码

    包含3个文件:html、slider-H5.js、jquery.js。在html中可配置滑动参数。具体代码如下: HTML代码: <!...<...meta name=viewport content=width=device-width, target-densitydpi=high-dpi, initial

    ember-cli-panels:支持在模板之间立即切换的 ember 插件

    meta name =" viewport " content =" user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi " /> 安装 npm install...

    HTML5添加禁止缩放功能

    meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, target-densitydpi=device-dpi" /> ps:禁止Html5在手机上屏幕页面缩放 最近...

    js获取内联样式的方法

    meta name=”viewport” content=”width=device-width,target-densitydpi=high-dpi,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no”/> <title>javascript 获取内联样式<...

    CSS实现动态图片的九宫格布局的实例代码

    meta name="viewport" content="width=750,user-scalable=no,target-densitydpi=device-dpi,viewport-fit=cover"> 效果图如下:   需求分析 高宽: 1张图【宽320,高320】[2倍稿尺寸] 2张图时【宽332,高332】 3...

    微信分享demo

    最后特别交代下,当人眼距离少于100个像素时会识别不出来。如果静态图片尺寸较少,而手机的densityDpi又比较高的话

    javascript实现消灭星星小游戏简单版

    meta charset=utf-8 content=target-densitydpi=320,width=640,user-scalable=no /> <noscript><meta http-equiv=refresh content=0> <title></title> <meta name=description id=seo_...

Global site tag (gtag.js) - Google Analytics