天天看點

dp和px、sp和px的互相轉化的工具類

import android.content.Context;
import android.content.res.Resources;

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);  
    }  



	/**
	 * sp轉px.
	 */
	public static int sp2px(Context context,float value) {
		Resources r;
		if (context == null) {
			r = Resources.getSystem();
		} else {
			r = context.getResources();
		}
		float spvalue = value * r.getDisplayMetrics().scaledDensity;
		return (int) (spvalue + 0.5f);
	}


	/**
	 * px轉sp.
	 */
	public static int px2sp(Context context,float value) {
		final float scale = context.getResources().getDisplayMetrics().scaledDensity;
		return (int) (value / scale + 0.5f);
	}
}