美文网首页
辨析Android中的dp、px之间的关系及一些概念

辨析Android中的dp、px之间的关系及一些概念

作者: 已迁至知乎_此不再维护 | 来源:发表于2016-10-13 11:33 被阅读0次

手机的尺寸: 屏幕对角线的长度,单位为英寸(2.54cm)

手机的分辨率: 屏幕能显示的像素的数量, 一般用在长方向上数量*宽方向上数量来表达

手机的像素密度: pixels per inch,也称PPi,即每英寸屏幕能显示的像素数,像素密度越大,显示画面细节就越丰富。�计算:像素密度={1+√[(长度像素数-1)2+(宽度像素数-1)2]}/屏幕尺寸

DPI: Dots Per Inch(每英寸所打印的点数或线数)的缩写,用来表示打印机打印分辨率, 但有时也会用dpi来代指ppi

手机的密度: Density, 以160dpi为基准,手机的像素密度与基准的比值。 即像素密度为160时Density为1

常用dpi标识(字母) 常用dpi标识(数字) 手机密度(density)
ldpi 120dpi 0.75
mdpi 160dpi 1.0
hdpi 240dpi 1.5
xhdpi 320dpi 2.0

px: pixels(像素) ,1px就是屏幕上一个物理像素点的大小(长度)。

dp/dip: device-independent pixels(设备无关像素),一个基于density的抽象单位,如果一个160dpi的屏幕(手机密度为1的话),1dp=1px

定义:1dp = (dpi / 160) px
也就是1px = 1/density dp
即:1dp = density px

  • 160dpi:1dp = 1px
  • 120dpi:1dp = 0.75px
  • 320dpi:1dp = 2px

dp值转换为px值得方法为:
假设手机密度 :density = x,dp的值为y
由1dp = density px
可知ydp = yx px
所以结果为y
x

px值转换为dp值得方法为:
假设手机密度 :density = x,px的值为y
由1px = 1/density dp
可知 ypx = y/x dp
所以结果为y/x

因此有了如下方法:
public static int dip2px(Context context, float dipValue){ final float scale = context.getResources().getDisplayMetrics().density; return (int)(dipValue * scale + 0.5f); } public static int px2dip(Context context, float pxValue){ final float scale = context.getResources().getDisplayMetrics().density; return (int)(pxValue / scale + 0.5f); }

至于为什么要加0.5f?
因为在java中,强制转换符把float转换为int时,是直接丢掉小数部分的,加0.5f起到了四舍五入的作用,可以减小误差。

相关文章

  • 辨析Android中的dp、px之间的关系及一些概念

    手机的尺寸: 屏幕对角线的长度,单位为英寸(2.54cm) 手机的分辨率: 屏幕能显示的像素的数量, 一般用在长方...

  • Android的适配

    1. dp与px的关系 android中的dp在渲染前会将dp转为px,计算公式: px = density * ...

  • android中dp和px的dpi的关系

    关于android的dp和px的关系是我刚开始学习android的知识点dp和px之间又有一个dpi作为桥梁,我们...

  • Android 屏幕适配

    1. 基本概念 android中dp在渲染之前会将dp转为px,计算公式: dp(dip):Density ind...

  • Android 屏幕适配

    1. 基本概念 android中dp在渲染之前会将dp转为px,计算公式: dp(dip):Density ind...

  • 两行代码搞定Android屏幕适配

    基本概念 另外,像素是px。不用多说。 基本计算公式 android中的dp在渲染前会将dp转为px,计算公式:p...

  • 屏幕适配

    参考 android dp api关于Android设备屏幕大小及密度的系统参数类Android中px dpi d...

  • 2018-08-29

    今日头条适配方案 一、屏幕适配原理 1、Android中的dp、px、dpi、desity关系 px = dens...

  • Android开发中dp_sp_px理解

    Android开发中 dp sp px 的理解 基础概念 px : 其实就是像素单位,比如我们通常说的手机分辨列表...

  • android屏幕适配学习

    基础知识 android中的dp在渲染前会将dp转为px,计算公式: px = density * dp; den...

网友评论

      本文标题:辨析Android中的dp、px之间的关系及一些概念

      本文链接:https://www.haomeiwen.com/subject/flswyttx.html