zoukankan      html  css  js  c++  java
  • 【Android学习】尺寸单位 px in mm pt dp sp

    一、Android中支持的尺寸单位

        下面用表格的方式将Android中支持的尺寸单位列举,供大家参考:

    Android的尺寸单位
     单位表示  单位名称  单位说明
     px  像素  屏幕上的真实像素表示
     in  英尺  基于屏幕的物理尺寸表示
     mm  毫米  基于屏幕的物理尺寸表示
     pt  点  
     dp  和精度无关的像素  相对屏幕物理密度的抽象单位
     sp  和精度无关的像素  类似于dp

    二、关于dp与sp的说明

        这里需要说明一下dpi的概念,他就是说明屏幕上一英寸里面有多少个像素点,这就是这里所谓的Density密度。dp的密度无关也就是排除各种屏幕dpi不同而导致的显示规格不同,sp是在dp的基础上还与scale无关,这里的scale应该是指的是屏幕大小,也就是平常所说的几寸几寸屏。

        如果屏幕密度为160,这时dp和sp和px是一样的。1dp=1sp=1px,但如果使用px作单位,如果屏幕大小不变(假设还是3.2寸),而屏幕密度变成了320。那么原来TextView的宽度设成160px,在密度为320的3.2寸屏幕里看要比在密度为160的3.2寸屏幕上看短了一半。但如果设置成160dp或160sp的话。系统会自动将width属性值设置成320px的。也就是160 * 320 / 160。其中320 / 160可称为密度比例因子。

        如果使用dp和sp,系统会根据屏幕密度的变化自动进行转换。所以在我们的应用程序中,提倡使用sp、dp来适应各种不同的屏幕。

    三、dp(或dip)和px互相转换:

        下面列出Android开发中常用的dp(或dpi)和px互相转换的方法,仅供读者参考:

     1  /**
     2     * 根据手机的分辨率从dp(或dip)转换成px
     3     */
     4    public static int dip2px(Context context, float dpValue) {
     5    final float scale = context.getResources().getDisplayMetrics().density;
     6    return (int) (dpValue * scale + 0.5f);
     7    }
     8   
     9    /**
    10    * 根据手机的分辨率从px转换成dp(或dip)
    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   }
  • 相关阅读:
    Flex Charting: Format Your X And Y Axis
    Flex Charting: Format Your Data Tips The Same As Your Axes
    高质量的开源Flex UI组件库项目(FlexLib)
    今天学习Flex3.2嵌入图片,值得说道的是如何嵌入scale9 缩放的图像
    zz[as3 hack技术]垃圾回收机强制执行
    Spark Skinning (including SkinnableComponent) Functional and Design Specification
    Flex DataTransforms类的理解
    关于AS3中弱引用的一点理解
    flex 元字符
    收集整理了一些AS3中常用到的公式
  • 原文地址:https://www.cnblogs.com/zhangjiawei/p/Size.html
Copyright © 2011-2022 走看看