android屏幕密度規律及dp px轉換

 

 

  pxdp(sp) 之間轉化公式:前端

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

  • /**
  • * 密度轉換像素
  • * */
  • 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倍的圖))web

 

     3  屏幕密度density:::markdown

  • 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  還能夠這樣獲取手機屏幕密度:::app

     1 手機 2垂直邊 分辨率  平方和 結果 開平方 獲得 斜角線的長度iphone

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

        -----例如:   (2160*2160+1080*1080) 開平方後 / 6寸 = 402(華爲mete10 pro)post

 

      5  scal因子 = displayMetrics實例 獲取到densityDpi(120 160 240 320 480 640) /160 (mdpi的標準160ppi)):flex

       

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

                      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的標註標準

 

 

相關文章
相關標籤/搜索