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

        }   

       

    }

  • 相关阅读:
    关于json中对象的删除
    JDBC操作数据库 封装好的工具类
    json <--->List集合,实体类 之间的相互转换
    java--->>发送邮件
    登陆的过滤器
    Hadoop + Spark 在CentOS下的伪分布式部署
    CentOS和ubuntu修改hostname的区别
    ubuntu 用户管理 adduser vs useradd
    hadoop2.6.1源码编译64位
    MySQL Binlog详解
  • 原文地址:https://www.cnblogs.com/wgha/p/5756089.html
Copyright © 2011-2022 走看看