1. 程式人生 > >Android在程式碼中dx,dp,sp的格式轉化

Android在程式碼中dx,dp,sp的格式轉化

/**
 * px,dp,sp之間的單位轉化
 * @author gaohequan
 *
 */
public class DpPxSpTransformUtil {
	private static float scale;
	/**
	 * 初始化獲得螢幕密度
	 * @return 螢幕密度
	 */
	public static void init(float scale){		
		DpPxSpTransformUtil.scale=scale;
	}
	/** 
	 * 根據手機的解析度從 dp 的單位 轉成為 px(畫素) 
	 */  
	public static int dip2px(float dpValue) {  
		return (int)(dpValue * scale + 0.5f);
	}  
	/** 
	 * 根據手機的解析度從 px(畫素) 的單位 轉成為 dp 
	 */  
	public static int px2dip(float pxValue) {  
	   return (int)(pxValue / scale + 0.5f);
	}  
	/** 
     * 將px值轉換為sp值,保證文字大小不變 
     * @return 
     */  
    public static int px2sp(float pxValue) {  
        return (int) (pxValue / scale + 0.5f);  
    }  
  
    /** 
     * 將sp值轉換為px值,保證文字大小不變 
     * @return 
     */  
    public static int sp2px(float spValue) {    
        return (int) (spValue * scale + 0.5f);  
    }  
}
使用的時候先要初始化螢幕密度,舉個栗子:
	Drawable dr = getResources().getDrawable(R.drawable.no_voucher_hint);
<span style="white-space:pre">	</span>DpPxSpTransformUtil.init(this.getResources().getDisplayMetrics().density);
<span style="white-space:pre">	</span>dr.setBounds(0, 0, DpPxSpTransformUtil.dip2px(25),DpPxSpTransformUtil.dip2px(20));