zoukankan      html  css  js  c++  java
  • px,dp,sp三者的转换

    dp是虚拟像素,在不同的像素密度的设备上会自动适配,

    比如: 在320x480分辨率,

    像素密度为160,1dp=1px 在480x800分辨率,像素密度为240,1dp=1.5px

    计算公式:1dp*像素密度/160 = 实际像素数  

    下面是工具类:

    import android.util.TypedValue;   

    import android.content.Context;   

    //常用单位转换的辅助类   

    public class DensityUtil{   

        public DensityUtil()   

        {   

            /* cannot be instantiated */   

            throw new UnsupportedOperationException("cannot be instantiated");   

        }   

       

        /** 

         * dp转px 

         *  

         * @param context 

         * @param val 

         * @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 val 

         * @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 fontScale 

         * @param pxVal 

         * @return 

         */   

        public static float px2sp(Context context, float pxVal)   

        {   

            return (pxVal / context.getResources().getDisplayMetrics().scaledDensity);   

        }   

       

    }

  • 相关阅读:
    SpringBoot入门
    VUE 监听局部滚动 设置ICON的位置跟随
    手机端页面调试工具-vconsole使用
    js获取字符串字节的位数
    判断数据为[] {} /空数组或空对象
    Vue axios 上传图片
    Vue触发input选取文件点击事件
    腾讯地图添加多个Marker
    VUE-CLI 设置页面title
    小程序wxml文件引用方式
  • 原文地址:https://www.cnblogs.com/wgha/p/5756089.html
Copyright © 2011-2022 走看看