zoukankan      html  css  js  c++  java
  • android 中 dp和px转换

    DisplayUtils代码:

    public class DisplayUtil {
    
        public static int px2dip(Context context, float px) {
            float scale = context.getResources().getDisplayMetrics().density;
            return (int) (px / scale + 0.5f);
        }
    
        public static int dip2px(Context context, float dp) {
            float scale = context.getResources().getDisplayMetrics().density;
            return (int) (dp * scale + 0.5f);
        }
    }
    

    Android Framework也提供了相应的工具类供我们使用的。TypedValue 中的 applyDimension() 方法:

    /**
         * 
         * @param unit The unit to convert from.
         * @param value The value to apply the unit to.
         * @param metrics Current display metrics to use in the conversion -- 
         *                supplies display density and scaling information.
         */
        public static float applyDimension(int unit, float value,
                                           DisplayMetrics metrics)
        {
            switch (unit) {
            case COMPLEX_UNIT_PX:
                return value;
            case COMPLEX_UNIT_DIP:
                return value * metrics.density;
            case COMPLEX_UNIT_SP:
                return value * metrics.scaledDensity;
            case COMPLEX_UNIT_PT:
                return value * metrics.xdpi * (1.0f/72);
            case COMPLEX_UNIT_IN:
                return value * metrics.xdpi;
            case COMPLEX_UNIT_MM:
                return value * metrics.xdpi * (1.0f/25.4f);
            }
            return 0;
        }

     使用方法:

            //获取10dp
            int dp= (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,10,getResources().getDisplayMetrics());
            //获取10px
            int px= (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX,10,getResources().getDisplayMetrics());
            //获取10sp
            int sp= (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,10,getResources().getDisplayMetrics());
    

      






  • 相关阅读:
    白话数字签名(番外篇)签名EXE文件(下)
    浅谈javascript函数劫持(一)
    CentOS实验五:设置主机名称
    CentOS实验四:为虚拟机配置双网卡
    CentOS实验二:添加操作员帐号
    Linux命令提示符设置
    CentOS实验三:使用安装光盘建立本地软件源
    CentOS实验一:安装CentOS Server
    mount命令
    CentOS实验六:设置命令提示符
  • 原文地址:https://www.cnblogs.com/wangjiaghe/p/9061208.html
Copyright © 2011-2022 走看看