zoukankan      html  css  js  c++  java
  • 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-120dpi 320*240   1dp = 0.75px
    mdpi 120dpi-160dpi 480*320 (Half-size VGA) 1dp = 1px
    hdpi 160dpi-240dpi 800*480 (Wide VGA) 1dp = 1.5px
    xhdpi 240dpi-320dpi 1280*720 1dp = 2px
    xxhdpi 320dpi-480dpi 1920*1080 1dp = 3px
    xxxhdpi 480dpi-640dpi 3840*2160 1dp = 4px
     

        

     

    其他:::
     

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

     

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

     

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

     

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

     

     

    附: sketch的标注标准

     

     






  • 相关阅读:
    分页
    uuid算法
    mysql卸载安装
    安装和破解收费版idea
    css样式一开始不显示,点击显示隐藏
    各种技术网址
    vue加载高德地图,加标记点,点出文本框
    Security Traps 玩耍剧透(持续更新)
    最近做的一个小玩意踩的坑
    最近刷题的一个总结
  • 原文地址:https://www.cnblogs.com/softwarelanguagebs/p/9552978.html
Copyright © 2011-2022 走看看