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);   

        }   

       

    }

  • 相关阅读:
    1124 vue路由配置初级实践&和npm run dev干嘛了
    1130 携程网焦点图+导航栏,flex布局实践
    1124 在vscode中快速创建vue模板
    122 携程网案例flex布局第三部分
    128 手撸轮播组件瞬时切换版本,布局部分
    1125 vscode自定义快捷键扩展选择单词等
    124 本地服务器搭建
    1128 defineProperty中getter和setter的用法
    2216 怎么快速打开powershell
    Visual Studio 2010的网站局域网发布功能(Publish)
  • 原文地址:https://www.cnblogs.com/wgha/p/5756089.html
Copyright © 2011-2022 走看看