今天看到经常用的一个dp转px的方法

public static int dip2px(Context context, float dpValue) {final float scale = context.getResources().getDisplayMetrics().density;return (int) (dpValue * scale + 0.5f);}

计算的最后都加0.5f,这是为什么呢,于是在网上搜索一番发现千篇一律的dp转px方法都写成这样,至于为什么也没有说明,于是翻看View的源码,在构造函数中对xml文件中的参数进行初始化,对于padding之类的尺寸的值的处理用到了这么一个方法

public static int complexToDimensionPixelSize(int data,DisplayMetrics metrics){final float value = complexToFloat(data);final float f = applyDimension((data>>COMPLEX_UNIT_SHIFT)&COMPLEX_UNIT_MASK,value,metrics);final int res = (int)(f+0.5f);if (res != 0) return res;if (value == 0) return 0;if (value > 0) return 1;return -1;}

这是TypedValue中的一个方法

同样的在这个类中,发现了另一个方法

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

Converts an unpacked complex data value holding a dimension to its final floating point value

将一个含有尺寸的没有包装的数据转换成一个浮点型的值

这两个方法的区别就是返回值的不同一个是int一个是float,根据自己的理解,applyDimension这个方法返回的换算结果更为精准,但是有时可能需要int型的数值,这时,如果用这个方法返回了一个float型0.x的数值转成int型时就会变成0,所以需要+0.5f,防止0的出现

关于android尺寸单位换算相关推荐

  1. android 单位转换工具,Android尺寸单位转换 工具类

    可以写工具类对尺寸单位进行转换 package com.mengdd.dimen; import android.content.Context; public class DimenUtils { ...

  2. android切图尺寸_iOS、Android 开发单位换算及 UI 切图要求

    一.常用单位 1. px (像素) px 即 pixel,像素点,电子屏幕上组成图像的最基本单位,在描述屏幕分辨率时也会使用该单位.1px 表示一个像素,例如 iPhone 8 的尺寸为 750px ...

  3. android与ios ui切图关系,iOS、Android 开发单位换算及 UI 切图要求

    在移动端 UI 设计中,经常会用到的单位有 4 种:px.pt.dp 和 sp,很多人分辨不清这几种单位及其换算关系,以及 iOS 和 Android 的切图要求,我在这里做下简单的介绍,希望大家读完 ...

  4. 苹果切图换算android,iOS、Android 开发单位换算及 UI 切图要求

    在移动端 UI 设计中,经常会用到的单位有 4 种:px.pt.dp 和 sp,很多人分辨不清这几种单位及其换算关系,以及 iOS 和 Android 的切图要求,我在这里做下简单的介绍,希望大家读完 ...

  5. Android 文件单位换算B、kb、mb、gm,文件单位格式化

    /*** 文件大小格式化* @param size 单位为B.kb.mb.gb转换* @return*/public static String byteToFormat(long size){lon ...

  6. CSS中的几种尺寸单位

    一.尺寸单位 CSS 支持多种尺寸单位,包括: px:像素,固定大小单位 em:相对于当前元素字体大小的单位 rem:相对于根元素(HTML)字体大小的单位 %:相对于父元素的百分比单位 vh:相对于 ...

  7. android效果图换算比例,UI设计师给的px尺寸单位,安卓如何换算成dp?

    很多UI工程师为了适配IOS,常常拿IOS手机作用参考模型,设计出来的UI稿只有PX标注的.他们也不懂Android的dp和sp单位是怎么回事.这个时候我们Android工程师如果不注意怎么转换的话, ...

  8. ui和android有联系,Android单位换算与UI适配

    一,pt.px.屏幕尺寸.分辨率及ppi关系与单位换算 pt(point):磅,一个标准的固定长度单位,大小为1/72英寸. 主要用于印刷和平面设计 1inch = 2.54cm = 72pt px( ...

  9. android中的尺寸单位是什么,Android中各种长度尺寸单位(dp,dip,px,sp,pt)的区别

    dip : device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA.HVGA和 QVGA 推荐使用这个,不依赖像素 ...

  10. Android手机中的尺寸单位

    介绍一些Android手机中的常见尺寸单位:px.dp.sp.pt等. 1. px单位 px为pixel的缩写,1px代表一个物理像素点.在Android开发中,很少使用px单位,因为同样100px的 ...

最新文章

  1. Lenovo Setup(安装程序)
  2. String.format() 图文详解,写得非常好!
  3. 文本处理三剑客之sed
  4. Angular应用里child Component如何向parent Component发送事件
  5. Price merge是通过org change的callback来trigger的
  6. 再见 Spring Task,这个定时任务框架真香!
  7. 介绍当前流行的一些开源Flash视频播放器
  8. access在sql中横向求和_如何在Access查询中增加总和、平均查询列
  9. 《Algorithms》Java 语言特性
  10. 26. 面向对象程序设计
  11. qq服务器正在升级维护中,建议您稍后再尝试打开.谢谢!,用友通维护锦集
  12. 微软笔试题 回忆(回文方面)
  13. html 按钮 click事件无效,html中onClick HTML事件不能被触发
  14. 如何看懂财务报表:(二)财务报表目录解释
  15. 两台电脑使用一根网线直连传输文件
  16. python矩阵教程_Python Numpy Tutorial / Python Numpy 教程 (矩阵和图像操作)
  17. 关于提词器的知识都在这了
  18. 解决联想小新电脑使用vmware虚拟机蓝屏问题?
  19. Python实现文件简单加解密
  20. Hive3.1.3 安装配置

热门文章

  1. 推荐大家一部好电影:当幸福来敲门
  2. 装了linux的u盘格式化,u盘格式化容量变小了u盘安装linuxcentos
  3. 计算机点击管理无效,我的电脑有任务管理器但是点击却没反应是怎么回事
  4. set_drain_time和time类型数据介绍
  5. QT图形显示和处理5
  6. 删除QQ空间留言一直频繁怎么办,QQ空间留言一键删除
  7. android别踩白块小游戏,手摸手带你实现 小游戏别踩白块儿 -- 内有游戏链接
  8. 华为路由器 wifi网速慢解决办法
  9. 我的世界java版地狱_我的世界怎么去地狱_Minecraft地狱门建造教程 - 我的世界中文站...
  10. 抖音根据关键词获取视频列表接口调用展示