Android 中的dp和px

在安卓运用中,配置距离的时候用dp后者px都可以,一般情况下在xml中用dp的时间很多,但是在代码中设置参数的时候,传入的参数却是px。dp的设置跟手机没有关系,固定的dp在每台分辨率不同的手机都显示距离是一样的,所以一般也用dp作为一个固定的设置。

px: 像素点,比如1080*1920的屏幕,就是宽1080个像素点和高1920个像素点。

dpi: 像素密度, 是每一英寸屏幕的像素数量.关于他的计算方法(以1080*1920的5英寸屏幕为例):屏幕的对角线像素数/屏幕的尺寸 √(1080*1080+1920*1920)/5=441dpi。

dp:也叫dip设备无关像素。 1dp的概念是,1英寸的尺寸下有160个像素时,1dp = 1px。 也就是 如果你的手机像素密度是320dpi(一英寸有320个像素点)时, 1dp = 2px。


dp和px之间的转换。

public class DensityUtil {

    /**
     * 根据手机的分辨率从 dp 的单位 转成为 px(像素)
     */
    public static int dip2px(Context context, float dpValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f);
    }

    /**
     * 根据手机的分辨率从 px(像素) 的单位 转成为 dp
     */
    public static int px2dip(Context context, float pxValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (pxValue / scale + 0.5f);
    }
}


猜你喜欢

转载自blog.csdn.net/vipstone2/article/details/80753941