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

      






  • 相关阅读:
    结婚电子
    ASP.NET 5简介
    定位500错误!
    Web项目
    JS编程
    CQRS 示例
    领域驱动设计的面向服务架构
    Oracle免费的便捷Web应用开发框架
    ThreadLocal是否会引发内存泄露的分析 good
    应用的代码没有用新的类库来进行编译(转)
  • 原文地址:https://www.cnblogs.com/wangjiaghe/p/9061208.html
Copyright © 2011-2022 走看看