public class Util { /* * 將px轉換成dp值 * * */ public static int px2dp(Context context, float pxValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); } /* * 將dp轉換成px值 * * */ public static int dp2px(Context context, float dpValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f); } /* * 將px轉換成sp值 * * */ public static int px2sp(Context context, float pxValue) { final float scale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (pxValue / scale + 0.5f); } /* * 將sp轉換成px值 * * */ public static int sp2px(Context context, float spValue) { final float scale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (spValue * scale + 0.5f); } }
使用系統提供的TypedValue轉換java
public class Util { private Context context; /* * dp2px * */ public int dp2px(int dp) { return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, getMetrics()); } /* * sp2px * */ public int sp2px(int sp) { return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sp, getMetrics()); } public DisplayMetrics getMetrics() { return context.getResources().getDisplayMetrics(); } public void setContext(Context context) { this.context =context; } }