Android開發中的各種尺度單位

Android開發中的各種尺度單位

過去,程序員通常以像素為單位設計計算機用戶界面。例如:圖片大小為80×32像素。這樣處理的問題在於,如果在高分辨率顯示器上運行該程序,則用戶界面會顯得很小。在有些情況下,用戶界面可能會小到難以看清內容。由此我們采用與分辨率無關的度量單位來開發程序就能夠解決這個問題。Android應用開發支持不同的度量單位。

度量單位含義

dip:
Density Independent Pixel(設備獨立像素). 不同設備有不同的顯示效果,這個和物理設備硬件有關,不依賴像素。

Dp
是 Android 建議使用的一種虛擬像素單位,可以使定義的UI佈局在不同像素密度的設備上具有相同的效果。
像素密度dip = 每英寸長度含有的像素點數量 = 屏幕縱向(橫向)長度 / 屏幕縱向(橫向)像素數目。
這種密度無關像素尺寸等同於160 dpi 屏幕上的一個物理像素。所以 pixels = dp * (density / 160) 推導出來 1px = 160dpi ( 1 / 160),也就是說在每英寸長度含有160個像素點的屏幕上 1px =1dp。

看下面幾個轉化公式

public static float dp2px(@NonNull Resources resources, @FloatRange(from = 0) float dp) {
    final float scale = resources.getDisplayMetrics().density;
    return dp * scale + 0.5f;
}

/**
 * 根據手機的分辨率從 px(像素)的單位轉成 dp
 */
public static float px2dp(@NonNull Context pContext, @FloatRange(from = 0) float px) {
    return px2dp(pContext.getResources(), px);
}

public static float px2dp(@NonNull Resources resources, @FloatRange(from = 0) float px) {
    final float scale = resources.getDisplayMetrics().density;
    return px / scale + 0.5f;
}

px: pixels(像素).

不同設備顯示效果相同,像素(pixel),表示屏幕上一個物理像素點 不建議直接使用 px 繪制UI,因為受像素密度的影響,以 px 為單位繪制的UI在不同手機上顯示的實際大小會不同

pt: point

是一個標準的長度單位,1pt=1/72英寸,用於印刷業,非常簡單易用;

sp: scaled pixels

(放大像素). 主要用於字體顯示。

in(英寸)

長度單位。 很少使用

mm(毫米)

長度單位。 很少使用

android系統定義瞭四種像素密度:

這裡寫圖片描述

基本用法

文字尺寸用sp為單位,非文字的尺寸用dp作單位。特殊情況使用px單位,例如定義分隔線時使用寬度為1px的細線 。

You May Also Like