790
技術社區[雲棲]
Android,關於設備獨立像素(dip/dp),關於機型屏幕適配
虛擬像素單位, 用於定義應用的UI, 以密度無關的方式表達布局尺寸或位置.
android官方定義dip等價於160dpi屏幕下的一個物理像素點.
在運行時, android根據使用中的屏幕的實際密度, 透明地處理任何所需dp單位的縮放.
dp到屏幕像素的轉換公式: pixels = dps * (density / 160).
舉例來說, 在 240 dpi 的屏幕上, 1dp 等於 1.5物理像素.
強烈推薦使用dp單位來定義你的應用UI, 這是確保你的UI在不同屏幕上顯示的一個好方法.
-
Android平台劃分幾個的實際支持的屏幕尺寸和分辨率範圍
-
4個通用尺寸:
- small: 至少 426dp x 320dp
- normal: 至少 470dp x 320dp
- large: 至少 640dp x 480dp
- xlarge: 至少 960dp x 720dp -- Android 2.3 (API Level 9)
-
4個通用屏幕密度:
- ldpi (low)
- mdpi (medium)
- hdpi (high)
- xhdpi (extra high): -- Android 2.2 (API Level 8)
-
4個通用尺寸:
圖1: Android平台如何將真實屏幕密度和大小映射到通用的密度和尺寸配置.
表 1. Android SDK中包含的模擬器皮膚的屏幕尺寸和密度,以及其他典型的分辨率.
Size | Low density (120), ldpi | Medium density (160), mdpi | High density (240), hdpi | Extra high density (320), xhdpi | |
---|---|---|---|---|---|
Small screen | 2 ~ 3.5 inch | QVGA (240x320) | 480x640 | ||
Normal screen | 3+ ~ 4.5 inch |
WQVGA400 (240x400) WQVGA432 (240x432) |
HVGA (320x480) |
WVGA800 (480x800) WVGA854 (480x854) 600x1024 |
640x960 |
Large screen | 4+ ~ 7 inch |
WVGA800** (480x800) WVGA854** (480x854) |
WVGA800* (480x800) WVGA854* (480x854) 600x1024 |
||
Extra Large screen | 7 ~ 10+ inch | 600x1024 |
768x1024 WXGA (768x1280) 800x1280 |
1152x1536 1152x1920 1200x1920 |
1536x2048 1536x2560 1600x2560 |
* 要模擬此配置, 使用WVGA800 或 WVGA854創建一個AVD, 指定自定義密度160.
** 要模擬此配置, 使用WVGA800 或 WVGA854創建一個AVD, 指定自定義密度120.
ps: 增加輔助工具類:
- import android.content.Context;
- public class DensityUtil {
- public static int dip2px(Context context, float dpValue) {
- final float scale = context.getResources().getDisplayMetrics().density;
- return (int) (dpValue * scale + 0.5f);
- }
- public static int px2dip(Context context, float pxValue) {
- final float scale = context.getResources().getDisplayMetrics().density;
- return (int) (pxValue / scale + 0.5f);
- }
- }
最後更新:2017-04-03 14:54:38