天天看點

關于手機螢幕機關

先插一句比較小白的話。。

點動成線,其實我們看到的螢幕是一個個像素點顯示的,密集的點顯示成所看到的圖像。

常見的機關:in、px、dpi(ppi、density)、dp(dip)、sp

in:inch,英寸,每英寸大約是2.54厘米,一般手機所說的螢幕多少寸都是指對角線的長度。

px:Pixel,像素,最小機關,指每一個像素點。通常所說的分辨率1920*1080就是指各個方向上的像素點的數量。

dpi(ppi、density):

dpi為Dots Per Inch的縮寫,表示每英寸點的個數,一般用于列印分辨率。

ppi為Pixels Per Inch的縮寫,表示每英寸像素點的個數,一般用于顯示分辨率。

density,密度,表示每Inch點的個數。

計算方法為px/in即可。

安卓的資源清單檔案夾:

drawable-ldpi (dpi=120)
drawable-mdpi (dpi=160)
drawable-hdpi (dpi=240)
drawable-xhdpi (dpi=320)
drawable-xxhdpi (dpi=480)
           

dp(dip):裝置獨立像素,Device Independent Pixels的縮寫,Android特有的機關。不會因為像素而導緻顯示效果不同。

sp:主要用于調整大小。

加載資源時,Android會先根據螢幕的dpi在dpi相同的資源檔案夾中找資源,然後從最大的資源檔案夾開始找。

是以推薦在dpi最高的檔案夾放置一套資源檔案即可,對資源的長高設定wrap_content,系統會自動縮放保持顯示效果不變。

LayoutParams執行個體化時傳的參數為px,需要将布局的dp轉為px才能使效果一樣。

LayoutParams初始化時需要初始化為父布局的類型

dp轉px的方法為:

int dip = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,60,getResources().getDisplayMetrics());