Android在程式碼中dx,dp,sp的格式轉化
阿新 • • 發佈:2019-02-10
使用的時候先要初始化螢幕密度,舉個栗子:/** * 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));