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,可用于px与dip的互相转换。具体请参考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作单位:
- 设备最终会以px作为长度单位。
- 如果我们直接用px作为单位会造成UI在不同分辨率设备上出现不合适的缩放。因此我们需要一种新的单位,这种单位要最终能够以合适的系数换算成px使UI表现出合适的大小。
- Dip符合这种要求吗?
由dip和具体像素值的对应公式dip值 =设备密度/160* pixel值 可以知
pixel值=dip值/(设备密度/160),其中dip值是我们指定的长度大小,那么pixel值,160也是定植,也就是说UI最终的pixel值只受像素密度dip的影响,这个dip就相当于那个换算系数,这个系数的值是多少有设备商去决定。因此dip符合这种要求。
分享到:
相关推荐
文章目录一、简述二、追根溯源三、实现3.1 定义Density用于对系统类值的修改3.2 在MainActivity中调用3.3 处理应用程序关于字体大小的监听3.4 如果多界面统一处理怎么办?3.4.1 BaseActivity3.4.2 监听应用程序的...
android手机分辨率 密度 等各种信息 String str = " 手机屏幕分辨率为: " + widthPixels + "*" + ... " 屏幕密度DPI(每寸像素:120/160/240/320): " + densityDpi + "r ydpi: " + ydpi + " xdpi: " + xdpi ;
但发现页面依旧不根据手机屏幕进行自动缩放,后来找其他同事帮忙解决了,我看了源代码发现了是在原来的viewport中增加了target-densitydpi属性。看之初不太了解,也因为当时自己手上有其他需求在处理,最近突然想起...
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轴...
1、如果是阅读型文本(例如一篇文章),不需要固定大小的,textSize可以使用sp...UI有时会根据iPhone机型使用750px*1334px作图,而按照1dp=2px来算,其结果为(375dp*667dp)。这样放置控件,宽度上会少15dp,高度上会
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复制内容到剪贴板...
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> ...
分九个章节,包函一般WEB页所需的各种的功能,很有参考性。非常适应于初学者。
一篇来源于北大的GIS课程,很值GIS初学者学习。欢迎阅读学习。
包含3个文件:html、slider-H5.js、jquery.js。在html中可配置滑动参数。具体代码如下: HTML代码: <!...<...meta name=viewport content=width=device-width, target-densitydpi=high-dpi, initial
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...
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在手机上屏幕页面缩放 最近...
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 获取内联样式<...
meta name="viewport" content="width=750,user-scalable=no,target-densitydpi=device-dpi,viewport-fit=cover"> 效果图如下: 需求分析 高宽: 1张图【宽320,高320】[2倍稿尺寸] 2张图时【宽332,高332】 3...
最后特别交代下,当人眼距离少于100个像素时会识别不出来。如果静态图片尺寸较少,而手机的densityDpi又比较高的话
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_...