• 关于dp dip dpi px


    在Android开发中,屏幕适配是一件非常让人头疼的事情。有时候在这个机型上调试的漂漂亮亮的UI界面,换一部手机就丑的不忍直视。但为了我们软件更好的用户体验,我们必须适应Android市场上形形色色的手机。

    你像做前端的人,为了给用户最优质的体验,他们也需要适配各种不同分辨率的屏幕啊,但是他们为什么不需要为这个问题发愁呢?恩,这要是因为这个东西-----百分比。他们可以听过设置百分比而不强制设定宽高的形式来适配,这样根据机型不同,他们的显示效果并不会有太大差异。然而,可惜的是,Android中并不支持这种技术,只有dp sp这种单位。那么下来我们就来研究一下这些单位。

         dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。 

         dp: dip是一样的

         px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。

         sp: scaled pixels(放大像素). 主要用于字体显示best for textsize。

     

      在Android的TypedValue.java类中,有一个如下方法:

        public static float applyDimension(int unit, float value, DisplayMetrics metrics){

            switch (unit) {

            case COMPLEX_UNIT_PX:

                return value;

            case COMPLEX_UNIT_DIP:

                return value * metrics.density;

            case COMPLEX_UNIT_SP:

                return value * metrics.scaledDensity;

            case COMPLEX_UNIT_PT:

                return value * metrics.xdpi * (1.0f/72);

            case COMPLEX_UNIT_IN:

                return value * metrics.xdpi;

            case COMPLEX_UNIT_MM:

                return value * metrics.xdpi * (1.0f/25.4f);

            }

            return 0;

        }

       该函数功能:是把各单位换算为像素px。

       metrics.density:默认值为DENSITY_DEVICE / (float) DENSITY_DEFAULT;

       metrics.scaledDensity:默认值为DENSITY_DEVICE / (float) DENSITY_DEFAULT;

       DENSITY_DEVICE:为屏幕密度

       DENSITY_DEFAULT:默认值为160

     

    由此得出:dp和px的转换公式如下:

        px = dip * density / 160

        当density (屏幕密度)=160时,px=dp

     

      根据 google 的建议,TextView 的字号最好使用 sp 做单位,而且查看TextView的源码可知Android默认使用sp作为字号单位。将dip作为其他元素的单位。

  • 相关阅读:
    shell中定义变量用双引号和单引号以及不用引号的区别
    如何优雅的解决mac安装zsh不执行.bash_profile
    Spring在非web应用中关闭IoC容器 (registerShutdownHook)
    【Quartz】配置最简单的集群
    【Quartz】将定时任务持久化到数据库
    Mysql字符串字段判断是否包含某个字符串的3种方法
    函数:MySQL中字符串匹配函数LOCATE和POSITION使用方法
    MySQL字符串函数substring:字符串截取
    logback logback.xml常用配置详解 <filter>
    logback 常用配置详解<appender>
  • 原文地址:https://www.cnblogs.com/yangxiu/p/6119450.html
Copyright © 2020-2023  润新知