美文网首页
Android 理解像素密度与像素的关系

Android 理解像素密度与像素的关系

作者: xinwa | 来源:发表于2017-08-16 18:30 被阅读0次

    Android的手机多种多样,不同手机的屏幕密度也不同,故在相同物理尺寸下的所包含的像素点是不同的。

    开发使用

    在日常开发中,界面的xml文件中我们使用的是 dp 的单位,但是开发中使用的Android 的 API 则是 px。对于xml文件,系统在进行界面绘制时,会根据手机屏幕密度计算出对应的像素尺寸,所以我们在编写代码需要进行适配,根据不同手机屏幕的密度设置像素尺寸。

    密度是单位体积的质量,所以相同物理尺寸下的屏幕区域中,密度越大,那么这块区域内的像素点也就越多。如果在代码中添了设计给的像素尺寸,那么在密度大的手机上,实际的显示效果就会比设计图上的小了。

    dp与px转换公式

    px = dp * (dpi / 160)
    dp = px / (dpi / 160)

    这个公式的由来是因为,android官方规定,在dpi为160的设备下,1dp = 1px,其中 dpi / 160 也称之为密度。那么在320dpi设置下,1dp = 2px。

    Google的官方文档给出过解释,因为第一款 Android 设备( HTC 的T-Mobile G1)是属于(注意,是属于,不是等于)160dpi的,

    dp 与 px 转换代码

    public static int dipToPx(Context context, float dpValue) {
            final float scale = context.getResources().getDisplayMetrics().density;
            return (int) (dpValue * scale + 0.5f);
        }
    
        public static int pxToDip(Context context, float pxValue) {
            final float scale = context.getResources().getDisplayMetrics().density;
            return (int) (pxValue / scale + 0.5f);
        }
    

    在代码中转换时最后加上了0.5f,Android官方文档给的解释是为了向上取整,这样转换也就更精确

    相关概念

    DPI

    DPI 全称为 Dots Per Inch. (Inch的含义是英寸),意思也就是『一英寸内点的个数』。Android 设备采用 DPI 来表示屏幕的『密度』。DPI 原本是印刷行业的概念,意思是一英寸内有多少个墨点。

    PPI

    PPI(Pixels Per Inch) 意思是『每英寸内的像素数』,这是通用的概念

    屏幕尺寸

    手机所说的5.0寸指的是屏幕对角线的长度为5.0英寸。1英寸 = 2.54cm

    分辨率

    指的是屏幕的像素总数,1920 X 1080 的分辨率指的屏幕是由长为1920个像素点,宽为1080个像素点所组成的长方形区域。

    屏幕密度

    可以通过屏幕的长宽算出对角线的长度除以对角线的长度,就可以算出每英寸的屏幕密度

    px

    px 就是像素 pixel 的缩写。1px 代表一个显示设备中的一个像素点。

    dp

    DP 或者 DIP 叫做(Density-Independent pixel),Android 中的特有单位,它的大小是由操作系统根据手机屏幕密度动态渲染出来的,1dp 对应多少 px 在不同的设备上,可能是不一致的。

    相关文章

      网友评论

          本文标题:Android 理解像素密度与像素的关系

          本文链接:https://www.haomeiwen.com/subject/fyxwrxtx.html