當前位置:編程學習大全網 - 腳本源碼 - Bitmap的內存計算方式

Bitmap的內存計算方式

壹、基礎概念:

px:像素(pixel),指的是屏幕上的物理點,最小的獨立顯示單位。

ppi:指的是水平方向或者豎直方向上每英寸的像素值,每英寸像素點(就是每英寸像素點的數量),通過屏幕長寬計算出對角線的長度,再除以屏幕對角線英寸值。X/x = Y/y = ppi,這裏X為水平像素值,x為水平英寸值,Y為豎直像素值,y為豎直英寸值。所以ppi=√(X?+Y?)/對角線英寸

dpi:每英寸點(mdpi:150,hdpi:240),每英寸的像素點的數量

dp:與像素點無關,虛擬像素,px = dp (dpi/160)

densityDpi:是屏幕每英寸對應多少個點(不是像素點)density = densityDpi/160

in:英寸,等於2.54厘米。

二、計算:

1、像素的計算

px = dp (dpi/160)

以Nexus6為例,壹張180 180的圖片,放在設置了wrap-content的ImageView中,當這張圖片,分別放在drawable-nodpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi,drawable-xxhdpi,drawable-xxxhdpi的資源目錄下,在屏幕上顯示多大像素的圖片?

hdpi:int(180560/240)+0.5f)=420px

xhdpi:int(180 (560/320)+0.5f) = 315px

xxhdpi:int(180 (560/480)+0.5f) = 210px

2、內存的計算:

ALPHA8,RGB565,ARGB_4444,ARGB8888,Android系統默認ARGB8888.(分別占的字節數為1,2,2,4Byte)

hdpi的內存:4204204=705600byte = 689kb

xhdpi的內存:3153154= 396900byte = 387.6kb

xxhdpi的內存:2102104=176400byte = 172.2kb

drawable-ldpi (dpi=120, density=0.75)

drawable-mdpi (dpi=160, density=1)

drawable-hdpi (dpi=240, density=1.5)

drawable-xhdpi (dpi=320, density=2)

drawable-xxhdpi (dpi=480, density=3)

3、bitmap的內存占用:Bitmap 在內存當中占用的大小其實取決於:

色彩格式,如果是 ARGB8888 那麽就是壹個像素4個字節,如果是 RGB565 那就是2個字節

原始文件存放的資源目錄(是 hdpi 還是 xxhdpi )等

目標屏幕的密度(所以同等條件下,紅米在資源方面消耗的內存肯定是要小於三星S6的)

4、內存計算:

720 720px的圖片放到手機屏幕是320dpi,縮放的文件夾是mdpi,采用默認的存儲格式,則占用的內存是:

(720 (160/320)+0.5f)^2

  • 上一篇:mapgis k9為什麽我的服務項啟動不了呢,能幫個忙嗎?
  • 下一篇:微信店鋪怎麽開微信店鋪如何開
  • copyright 2024編程學習大全網