Android长度单位详解

来源:互联网 发布:外国人逛淘宝 编辑:程序博客网 时间:2024/05/01 22:09

Android长度单位详解


1、android中主要长度单位:

         px:表示屏幕实际的象素。例如,720*480的屏幕在横向有720个象素,在纵向有480个象素。
         in:英尺。
         mm:毫米。
         pt:表示一个点,屏幕 的物理尺寸。其实就是手机实际的尺寸大小 如4.0的屏,就这样。
         dp/dip:与密码无关的像素,一个基于density的抽象单位,这个和设备硬件有关,通常在开发中设置一些view的宽高推荐用这个,一般情况下,在不同分辨率,都不会有缩放的感觉。在运行时, Android根据使用中的屏幕的实际密度透明地处理任何所需dip单位的缩放。
         sp:与刻度无关的像素,主要是对字体大小的缩放。

         在所有的长度单位中dp/dip、sp使用最多,其它几个基本不怎么使用。

2、dp/dip与px的关系:

HVGAdensity=160;

QVGAdensity=120

WVGAdensity=240

WQVGAdensity=120。

density值表示每英寸有多少个显示点,与分辨率是两个概念。

dippx的转换公式px = dip * (density / 160)

dp与px转换的工具类:

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);  

    }  

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标签的资源。

提示:大家在布局时中最好都用dip。

            强烈推荐:http://www.cnblogs.com/olvo/archive/2012/04/17/2453203.html

        


原创粉丝点击