Android DisplayMetrics 详解

1 篇文章 0 订阅

DisplayMetrics信息获取:

//Display屏幕显示的详细信息
Display display = getWindowManager().getDefaultDisplay();
//从Display获取DisplayMetrics信息                
DisplayMetrics metrics = new DisplayMetrics();
display.getMetrics(metrics);
//上面获取的DisplayMetrics只可读,
//第二种获取DisplayMetrics的方式,可修改里面的参数
context.getResources().getDisplayMetrics()

实际屏幕的DisplayMetrics信息

机型屏幕尺寸widthPixelsheightPixelsdensitydensityDpiscaledDensityxdpiydpi
小米4C4.9英寸108019203.04803.0449.704447.412
小米mix25.99英寸108021602.754402.75403.411403.411

首先160dpi是google定义的一个密度标准,dpi就是dots_per_inch,

  • widthPixels:宽度 显示的数值是1080,就是说屏幕的宽度是1080px
  • heightPixels:高度
  • densityDpi:密度
  • density:密度比值(密度/标准密度,即480/160=3),单位英寸下可以容纳多少个点
  • scaledDensity:同density,用于文字缩放的计算也就是sp
  • xDpi:水平方向的真实密度,水平方向上1inch实际上容纳的点的数量
  • yDpi:垂直方向的真实密度

densityDpi和density关系:

density就是densityDpi除以标准密度160的出来的一个比值(参考上图),主要用于常用dp的计算,比如小米4c控件宽设为360dp的话,换算成像素就是1080px就是全屏了。

densityDpi和xDpi、yDpi的关系:

xDpi和yDpi是屏幕真实的屏幕密度,如上面小米mix2获取是403.411,而小米宣传的mix2屏幕密度就是403ppi,densityDpi大概是厂家设定的一个值,界面适配基本也只会使用densityDpi

屏 幕 密 度 = 屏 幕 对 角 线 的 像 素 点 数 量 屏 幕 尺 寸 屏幕密度 = \frac {屏幕对角线的像素点数量}{屏幕尺寸} =线

public static float applyDimension(int unit, float value,
                                     DisplayMetrics metrics) {
      switch (unit) {
          case COMPLEX_UNIT_PX:
              return value;
          case COMPLEX_UNIT_DIP:
              return value * metrics.density;
          case COMPLEX_UNIT_SP:
              return value * metrics.scaledDensity;
          case COMPLEX_UNIT_PT:
              return value * metrics.xdpi * (1.0f / 72);
          case COMPLEX_UNIT_IN:
              return value * metrics.xdpi;
          case COMPLEX_UNIT_MM:
              return value * metrics.xdpi * (1.0f / 25.4f);
      }
      return 0;
  }
  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值