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)

Android,关于设备独立像素(dip/dp),关于机型屏幕适配.
图1: Android平台如何将真实屏幕密度和大小映射到通用的密度和尺寸配置.


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

 SizeLow density (120), ldpiMedium density (160), mdpiHigh density (240), hdpiExtra high density (320), xhdpi
Small screen2 ~ 3.5 inchQVGA (240x320) 480x640  
Normal screen3+ ~ 4.5 inch WQVGA400 (240x400)  
WQVGA432 (240x432)
HVGA (320x480) WVGA800 (480x800)  
WVGA854 (480x854)  
600x1024 
640x960 
Large screen4+ ~ 7 inch WVGA800** (480x800) 
WVGA854** (480x854)
WVGA800* (480x800)  
WVGA854* (480x854)  
600x1024
  
Extra Large screen7 ~ 10+ inch600x1024768x1024 
WXGA (768x1280)  
800x1280 
1152x1536 
1152x1920  
1200x1920
1536x2048 
1536x2560  
1600x2560 

* 要模拟此配置, 使用WVGA800 或 WVGA854创建一个AVD, 指定自定义密度160.
** 要模拟此配置, 使用WVGA800 或 WVGA854创建一个AVD, 指定自定义密度120.

 
ps: 增加辅助工具类:
  1. import android.content.Context;  
  2.   
  3. public class DensityUtil {  
  4.   
  5.       
  6.     public static int dip2px(Context context, float dpValue) {  
  7.         final float scale = context.getResources().getDisplayMetrics().density;  
  8.         return (int) (dpValue * scale + 0.5f);  
  9.     }  
  10.   
  11.       
  12.     public static int px2dip(Context context, float pxValue) {  
  13.         final float scale = context.getResources().getDisplayMetrics().density;  
  14.         return (int) (pxValue / scale + 0.5f);  
  15.     }  
  16. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值