android dp与px的相互转换

import android.content.Context;

/**
 * Created by Administrator on 2017/10/12.
 */

public class DesnityUtil {


    /**
     * dp是虚拟像素,在不同的像素密度的设备上会自动适配,比如:
     在320x480分辨率,像素密度为160,1dp=1px
     在480x800分辨率,像素密度为240,1dp=1.5px
     计算公式:1dp*像素密度/160 = 实际像素数


     ppi的运算方式是:

     PPI = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数

     dp:Density-independent pixels,以160PPI屏幕为标准,则1dp=1px,

     dp和px的换算公式 :
     dp*ppi/160 = px。比如1dp x 320ppi/160 = 2px。

     */



    /**
     * 像素转dp
     * @param px
     * @param context
     * @return
     */
    public static int px2dp(int px, Context context){
        float density = context.getResources().getDisplayMetrics().density;
        return (int)(px/density+0.5f);
    }

    /***
     * dp转像素
     * @param dp
     * @param context
     * @return
     */
    public static int dp2px(int dp,Context context){
        float density = context.getResources().getDisplayMetrics().density;
        return (int)(dp*density+0.5f);
    }
}

  

猜你喜欢

转载自www.cnblogs.com/endian11/p/9087754.html
今日推荐