Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android屏幕計量單位詳解,android計量單位

Android屏幕計量單位詳解,android計量單位

編輯:關於android開發

Android屏幕計量單位詳解,android計量單位


1.px (pixels)(像素):是屏幕的物理像素點,與密度相關,密度大了,單位面積上的px會比較多。通常不推薦使用這個。

2.dip或dp(與密度無關的像素):一個基於density的抽象單位,這個和設備硬件有關,通常在開發中設置一些view的寬高推薦用這個,一般情況下,在不同分辨率,都不會有縮放的感覺。在運行時, Android根據使用中的屏幕的實際密度, 透明地處理任何所需dip單位的縮放。
3.sp(與刻度無關的像素):同dip/dp相似,會根據用戶的字體大小偏好來縮放,主要用於設置字體的大小。

可能很多朋友對dip和px 的區別,不是很清楚,包括我自己之前都沒弄清楚,下面簡單討論一下:
首先明確一點:

HVGA屏density=160;QVGA屏density=120;

WVGA屏density=240;WQVGA屏density=120

  

density值表示每英寸有多少個顯示點,與分辨率是兩個概念。

dip到px的轉換公式: px = dip * (density / 160)

Android官方定義dip等價於160dpi屏幕下的一個物理像素點, 即1dip=1px。舉例來說, 在 240 dpi 的屏幕上, 1dip 等於 1.5px。

 

不同density下屏幕分辨率信息,以480dip*800dip的 WVGA(density=240)為例:
    1.當density=120時屏幕實際分辨率為240px*400px (兩個點對應一個分辨率)狀態欄和標題欄高為19px或者25dip。
橫屏時屏幕寬度為400px或者800dip,工作區域高度211px或者455dip;
豎屏時屏幕寬度為240px或者480dip,工作區域高度381px或者775dip。
    2.當density=160時屏幕實際分辨率為320px*533px (3個點對應兩個分辨率)狀態欄和標題欄高為25px或者25dip。
橫屏是屏幕寬度533px 或者800dip,工作區域高度295px或者455dip;
豎屏時屏幕寬度320px或者480dip,工作區域高度508px或者775dip。
    3.當density=240時屏幕實際分辨率為480px*800px (一個點對於一個分辨率)狀態欄和標題欄高為38px或者25dip。
橫屏是屏幕寬度800px 或者800dip,工作區域高度442px或者455dip;
豎屏時屏幕寬度480px或者480dip,工作區域高度762px或者775dip。

    在Android的應用包apk中,系統會根據各個設備的具體情況引用相應的資源文件(注:不加任何標簽的資源是各種分辨率情況下共用的):

當屏幕density=240時,使用hdpi標簽的資源;
當屏幕density=160時,使用mdpi標簽的資源;
當屏幕density=120時,使用ldpi標簽的資源。

下面是在manifest中設置app在不同分辨率時,是否支持多密度的方法。

...
<supports-screens
     android:smallScreens="true"
     android:normalScreens="true"
     android:largeScreens="true"
     android:xlargeScreens="true"
     android:anyDensity="true" />

...

 

  

 

附:
系統對屏幕大小和密度分類對照圖 :

 

 

表 1. Android SDK中包含的模擬器皮膚的屏幕尺寸和密度,以及其他典型的分辨率.

 

 Low density (120), ldpiMedium density (160), mdpiHigh density (240), hdpiExtra high density (320), xhdpi Small screen QVGA (240x320)   480x640   Normal screen WQVGA400 (240x400) 
WQVGA432 (240x432) HVGA (320x480) WVGA800 (480x800) 
WVGA854 (480x854) 
600x1024 640x960 Large screen WVGA800** (480x800) 
WVGA854** (480x854) WVGA800* (480x800) 
WVGA854* (480x854) 
600x1024     Extra Large screen 1024x600 WXGA (1280x800)†
1024x768
1280x768 1536x1152
1920x1152 
1920x1200 2048x1536
2560x1536 
2560x1600

 

* 要模擬此配置, 使用WVGA800 或 WVGA854創建一個AVD, 指定自定義密度160.
** 要模擬此配置, 使用WVGA800 或 WVGA854創建一個AVD, 指定自定義密度120.

輔助工具類:

import android.content.Context;  

public class DensityUtil {    

    public static int dip2px(Context context, float dipValue) {  

        final float scale = context.getResources().getDisplayMetrics().density;  

        return (int) (dipValue * scale + 0.5f);  

    }  

    public static int px2dip(Context context, float pxValue) {  

        final float scale = context.getResources().getDisplayMetrics().density;  

        return (int) (pxValue / scale + 0.5f);  

    }  

} 

  

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved