android:dp,px,sp概念及之间转换

来源:互联网 发布:挣钱软件 编辑:程序博客网 时间:2024/06/15 22:24

概念:

  • px(pixels):屏幕的像素点
  • dpi(dot per inch):屏幕像素密度,每英寸多少像素
  • dp/dip(device independent pixels):设备独立像素,一个基于density的抽象单位。如果在一个160dpi的屏幕,1dp=1px。一般作为除文本以外的单位
  • sp(scaled pixels):同dp类似,一般作为文本的单位

分辨率与尺寸之间的关系

转换

如果屏幕密度为160时,这时1dp = 1px

转换公式:
dp = px / (dpi / 160); 若dpi = 160;即dp = px
px = dp * (dpi / 160);

px单位转换为dp单位

    /**     * 将px值转换为dp值     */    public static int px2dip(Context context, float pxValue) {        final float scale = context.getResources().getDisplayMetrics().density;        return (int) (pxValue / scale + 0.5f);    }

px单位转换为sp单位

    /**     * 将px值转换为sp值     */    public static int px2sp(Context context, float pxValue) {        final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;        return (int) (pxValue / fontScale + 0.5f);    }

dp单位转换为px单位

    /**     * dp转成px     */    public static int dip2px(Context context, float dipValue) {        final float scale = context.getResources().getDisplayMetrics().density;        return (int) (dipValue * scale + 0.5f);    }
0 0