android屏幕密度规律及dp px转换

 

 

  pxdp(sp) 之间转化公式:

     1  乘以(dp转px)或者除以(px转dp) scal缩放因子,在上浮0.5f

  • /**
  • * 密度转换像素
  • * */
  • public static int dip2px(float dipValue) {
  • return (int) (dipValue * scale + 0.5f);
  • }

 

  • /**
  • * 像素转换密度
  • * */
  • public int px2dip(float pxValue) {
  • return (int) (pxValue / scale + 0.5f);
  • }

 

     2  而因子是根据系统的屏幕密度density(每英寸多少显示点)  /160 (默认加载mdpi的标准160ppi  1px(1倍的图))

 

     3  屏幕密度density:::

  • DisplayMetrics metric = new DisplayMetrics();
  • getWindowManager().getDefaultDisplay().getMetrics(metric);
  • 或者
  • DisplayMetrics metric = context.getApplicationContext().getResources().getDisplayMetrics();
  • int width = metric.widthPixels; // 屏幕宽度(像素)
  • int height = metric.heightPixels; // 屏幕高度(像素)
  • float density = metric.density; // 屏幕密度倍数(0.75(ldpi) / 1.0(mdpi) / 1.5(hdpi) /2(xhdpi) /3(xxhdpi) /4(xxxhdpi)
  • int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240/ 320/ 480/ 640)

  

     4  还可以这样获取手机屏幕密度:::

     1 手机 2垂直边 分辨率  平方和 结果 开平方 得到 斜角线的长度

     2 除以 屏幕尺寸(比如 6寸),就是dpi密度

        -----例如:   (2160*2160+1080*1080) 开平方后 / 6寸 = 402(华为mete10 pro)

 

      5  scal因子 = displayMetrics实例 获取到densityDpi(120 160 240 320 480 640) /160 (mdpi的标准160ppi)):

       

     6  Mdpi 160 是1倍 1px=1dp; hdip 240 是mdpi的 1.5倍 1dp=1.5px;  xhdpi 320 是mdpi的2倍 ;

                      xxhdpi 480 是mdpi的3倍;xxxhdpi 640 是mdpi的4倍。。。

 

     7    不能根据分辨率来适配,根据密度(dpi)对应的文件夹来适配;

           放到对应的目录下,否则会出现小图高分辨上不清晰

         (  高分辨率适配上 图片要大), 大图放低分辨率上被压缩的时候也会消耗内存。

 

     

    8   对应表:

         1  像素密度范围  xhdpi之下的递增80 ; 以上的都是递增 160 ;

         2  一般都是16:9 (1280*720p  1920*1080p  2560*1440 2k); 

             全面屏幕 出现后,开始有了大概2:1 比例的分辨率,  宽都是1080高度不同 (2280*1080 2246*1080 2160*1080)

像素密度等级像素密度范围分辨率(通常)像素密度与dp转换关系
ldpi—dpi-120dpi320*240  1dp = 0.75px
mdpi120dpi-160dpi480*320 (Half-size VGA)1dp = 1px
hdpi160dpi-240dpi800*480 (Wide VGA)1dp = 1.5px
xhdpi240dpi-320dpi1280*7201dp = 2px
xxhdpi320dpi-480dpi1920*10801dp = 3px
xxxhdpi480dpi-640dpi3840*21601dp = 4px
 

    

 

其他:::
 

   1  android 一般都是以iphone 750为比例来设计。。。一般用2x倍的切图, 因为android的720p和750相差不大。

 

    2  Screen屏幕的高度,包括顶部状态栏 和 底部的操作栏。

 

   3  Windows窗口的高度,只包括app可视区页面高度。

 

   4  类似前端js也是一样: scrollHeight 整个页面的滚动高度;clientHeight 可视区高度.

 

 

附: sketch的标注标准

 

 






转载于:https://www.cnblogs.com/softwarelanguagebs/p/9552978.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值