【Android学习】Android计量单位

1,概念

1)dp(dip,device independent pixels,设备独立像素)

与设备硬件有关,不同设备有不同的显示效果。
一般为了支持WVGA、HVGA、QVGA,使用dp可以不依赖于像素。
一个基于density的抽象单位,如果一个160dpi的屏幕,1dp=1pxdip :等同于dp

2)px(pixels,像素)

不同设备显示效果相同。
一个像素通常被视为图像的最小的完整采样,用处较多,特别是web开发,页面基本都是使用像素作为单位。

3)sp(scaled pixels,放大像素)

注意用于字体显示。设置字体必须使用sp。
1pt约等于2.22sp.
与dp相似,但还会根据用户的字体大小偏好来缩放。建议使用sp作为文本的单位,其它用dip。

4)pt(point,磅)

是一个标准的长度单位,用于印刷业。1pt=1/72英寸。

5)in(英寸)

6)mm(毫米)

7)densityDip(屏幕密度)

表示每英寸有多少个显示点,与分辨率是两个概念。
不同屏幕分辨率信息,以480dip*800dip的 WVGA(density=240)为例:
densityDpi=120时:
屏幕实际分辨率为240px*400px (两个点对应一个分辨率)
状态栏和标题栏高各19px或者25dip
横屏是屏幕宽度400px 或者800dip,工作区域高度211px或者480dip
竖屏时屏幕宽度240px或者480dip,工作区域高度381px或者775dip
densityDpi=160时:
屏幕实际分辨率为320px*533px (3个点对应两个分辨率)
状态栏和标题栏高个25px或者25dip
横屏是屏幕宽度533px 或者800dip,工作区域高度295px或者480dip
竖屏时屏幕宽度320px或者480dip,工作区域高度508px或者775dip
densityDpi=240时:
屏幕实际分辨率为480px*800px (一个点对于一个分辨率)状态栏和标题栏高个38px或者25dip横屏是屏幕宽度800px 或者800dip,工作区域高度442px或者480dip竖屏时屏幕宽度480px或者480dip,工作区域高度762px或者775dip

apk的资源包中:
当屏幕densityDpi=240时,使用hdpi 标签的资源
当屏幕densityDpi=160时,使用mdpi标签的资源
当屏幕densityDpi=120时,使用ldpi标签的资源
不加任何标签的资源是各种分辨率情况下共用的

2,转换

1)px与dip转换

转换原因:
在Android开发我们一般都可以不需要使用px的,但是某一些控件的属性没有直接支持dip。所以需要转换。布局时尽量使用单位dip,少使用px。
两者之间的关系:

QVGA: density=0.75; densityDpi=120; QVGA(240*320)
HVGA: density=1.0; densityDpi=160; HVGA(320*480)
VGA: density=1.0; densityDpi=160; VGA(480*640)
WVGA: density=1.5; densityDpi=240; WVGA(480*800)
WQVGA:density=2.0; densityDpi=120; WQVGA(240*400

换算公式:

pixs =dips * (densityDpi/160). 
dips=(pixs*160)/densityDpi

方法:

public class SystemMethod {  

    public static int dip2px(Context context, int value) {  
        // 这是获取手机屏幕参数,后面的density就是屏幕的密度,类似分辨率 
        float scaleing = context.getResources().getDisplayMetrics().density;  
        return (int) (value * scaleing + 0.5f);  
    }  

    public static int px2dip(Context context, int value) {  
        float scaling = context.getResources().getDisplayMetrics().density;  
        return (int) (value / scaling + 0.5f);  
    } 
}  

猜你喜欢

转载自blog.csdn.net/sunshinetan/article/details/80189795