#Anroid常用单位转换的辅助类DensityUtils

来源:互联网 发布:python技术手册第三版 编辑:程序博客网 时间:2024/05/16 18:40

Anroid常用单位转换的辅助类DensityUtils

dip、px、dp、sp的相互转换

/** * :常用单位转换的辅助类 */public class DensityUtils {    private DensityUtils() {        throw new UnsupportedOperationException("cannot be instantiated");    }    /**     * 根据手机的分辨率从 dip 的单位 转成为 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);    }    /**     * dp转px     *     * @param context     * @param dpVal     * @return     */    public static int dp2px(Context context, float dpVal)    {        return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,            dpVal, context.getResources().getDisplayMetrics());    }    /**     * sp转px     *     * @param context     * @param spVal     * @return     */    public static int sp2px(Context context, float spVal)    {        return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,            spVal, context.getResources().getDisplayMetrics());    }    /**     * px转dp     *     * @param context     * @param pxVal     * @return     */    public static float px2dp(Context context, float pxVal)    {        final float scale = context.getResources().getDisplayMetrics().density;        return (pxVal / scale);    }    /**     * px转sp     *     * @param pxVal     * @param pxVal     * @return     */    public static float px2sp(Context context, float pxVal)    {        return (pxVal / context.getResources().getDisplayMetrics().scaledDensity);    }}

一般的,px和sp的转换是用得较多的,因为布局中大部分单位都是用dp,而在代码中的默认数字的单位是px,所有要用相同长度的dp转换为px,才能和布局中的长度对应。

使用起来也是很简单的,比如将dp转换为px

int width=DensityUtils.dp2px(this,20);//在Activity中,或者这里的上下文可以使用App中的

共勉:天生我材必有用,千金善尽还复来。

原创粉丝点击