Android 中dpi 、 dip 、分辨率、屏幕尺寸、px、density 关系以及换算

原文地址:http://www.cnblogs.com/yaozhongxiao/archive/2014/07/14/3842908.html

一、基本概念

  • dip        :device independent pixels(设备独立像素),不同设备有不同的显示效果,这个和设备硬件有关。它跟屏幕密度有关,如果屏幕密度大,1dip代表的px就多,比如在320dpi的屏幕上,1dip=2px。

  • dp        :就是dip。

  • px        : 像素。

  • dpi       :dots per inch, 直接来说就是一英寸多少个像素点。常见取值 120,160,240。我一般称作像素密度, 简称密度

  • density : 直译叫密度。常见取值 1.5 , 1.0 。和标准dpi的比例(160px/inc)。

  • 分辨率   : 横纵2个方向的像素点的数量,是指屏幕上垂直方向和水平方向上的像素个数。常见取值 480X800 ,320X480。

  • 屏幕尺寸: 屏幕对角线的长度。

  • pt           : point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用;

  • sp           : scaled pixels(放大像素). 主要用于字体显示best for textsize。

  • in            :(英寸)长度单位。 

二、应用

    在android里面,获取一个窗口的metrics,里面有这么几个值

     metrics.density; 
     metrics.densityDpi;

  densityDpi : 就是我们常说的dpi。

  density      :  其实是 DPI / (160像素/英寸) 后得到的值。是不是有点奇怪,因为我带了单位。。。这个涉及到后面一个比较重要的东西,后面再说。

  从上面就看得出了,DPI本身的单位也是 像素/英寸,所以density其实是没单位的,他就是一个比例值。

  而dpi的单位是 像素/英寸,比较符合物理上面的密度定义,密度不都是单位度量的值么,所以我更喜欢把dpi叫像素密度,简称密度,density还是就叫density。

三、计算

1、px与dp

    我们写布局的时候,肯定还是要知道1个dp到底有多少px的。

 换算公式如下: dp = (DPI/(160像素/英寸))px = density px

 注意,这里都是带单位的。px是单位,dp是单位,density没单位。

 为了方便,假设dpi是240 像素/英寸 , 那么density就是1.5

 那么就是 dp=1.5px ,注意这是带了单位的,也就是 设备无关像素 = density 像素

 那么转换为数值计算的话,应该是下面这个式子

 px = density * dp


转载于:https://my.oschina.net/u/2290546/blog/511515

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值