关于android尺寸单位换算
今天看到经常用的一个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尺寸单位换算相关推荐
- android 单位转换工具,Android尺寸单位转换 工具类
可以写工具类对尺寸单位进行转换 package com.mengdd.dimen; import android.content.Context; public class DimenUtils { ...
- android切图尺寸_iOS、Android 开发单位换算及 UI 切图要求
一.常用单位 1. px (像素) px 即 pixel,像素点,电子屏幕上组成图像的最基本单位,在描述屏幕分辨率时也会使用该单位.1px 表示一个像素,例如 iPhone 8 的尺寸为 750px ...
- android与ios ui切图关系,iOS、Android 开发单位换算及 UI 切图要求
在移动端 UI 设计中,经常会用到的单位有 4 种:px.pt.dp 和 sp,很多人分辨不清这几种单位及其换算关系,以及 iOS 和 Android 的切图要求,我在这里做下简单的介绍,希望大家读完 ...
- 苹果切图换算android,iOS、Android 开发单位换算及 UI 切图要求
在移动端 UI 设计中,经常会用到的单位有 4 种:px.pt.dp 和 sp,很多人分辨不清这几种单位及其换算关系,以及 iOS 和 Android 的切图要求,我在这里做下简单的介绍,希望大家读完 ...
- Android 文件单位换算B、kb、mb、gm,文件单位格式化
/*** 文件大小格式化* @param size 单位为B.kb.mb.gb转换* @return*/public static String byteToFormat(long size){lon ...
- CSS中的几种尺寸单位
一.尺寸单位 CSS 支持多种尺寸单位,包括: px:像素,固定大小单位 em:相对于当前元素字体大小的单位 rem:相对于根元素(HTML)字体大小的单位 %:相对于父元素的百分比单位 vh:相对于 ...
- android效果图换算比例,UI设计师给的px尺寸单位,安卓如何换算成dp?
很多UI工程师为了适配IOS,常常拿IOS手机作用参考模型,设计出来的UI稿只有PX标注的.他们也不懂Android的dp和sp单位是怎么回事.这个时候我们Android工程师如果不注意怎么转换的话, ...
- ui和android有联系,Android单位换算与UI适配
一,pt.px.屏幕尺寸.分辨率及ppi关系与单位换算 pt(point):磅,一个标准的固定长度单位,大小为1/72英寸. 主要用于印刷和平面设计 1inch = 2.54cm = 72pt px( ...
- android中的尺寸单位是什么,Android中各种长度尺寸单位(dp,dip,px,sp,pt)的区别
dip : device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA.HVGA和 QVGA 推荐使用这个,不依赖像素 ...
- Android手机中的尺寸单位
介绍一些Android手机中的常见尺寸单位:px.dp.sp.pt等. 1. px单位 px为pixel的缩写,1px代表一个物理像素点.在Android开发中,很少使用px单位,因为同样100px的 ...
最新文章
- Lenovo Setup(安装程序)
- String.format() 图文详解,写得非常好!
- 文本处理三剑客之sed
- Angular应用里child Component如何向parent Component发送事件
- Price merge是通过org change的callback来trigger的
- 再见 Spring Task,这个定时任务框架真香!
- 介绍当前流行的一些开源Flash视频播放器
- access在sql中横向求和_如何在Access查询中增加总和、平均查询列
- 《Algorithms》Java 语言特性
- 26. 面向对象程序设计
- qq服务器正在升级维护中,建议您稍后再尝试打开.谢谢!,用友通维护锦集
- 微软笔试题 回忆(回文方面)
- html 按钮 click事件无效,html中onClick HTML事件不能被触发
- 如何看懂财务报表:(二)财务报表目录解释
- 两台电脑使用一根网线直连传输文件
- python矩阵教程_Python Numpy Tutorial / Python Numpy 教程 (矩阵和图像操作)
- 关于提词器的知识都在这了
- 解决联想小新电脑使用vmware虚拟机蓝屏问题?
- Python实现文件简单加解密
- Hive3.1.3 安装配置
热门文章
- 推荐大家一部好电影:当幸福来敲门
- 装了linux的u盘格式化,u盘格式化容量变小了u盘安装linuxcentos
- 计算机点击管理无效,我的电脑有任务管理器但是点击却没反应是怎么回事
- set_drain_time和time类型数据介绍
- QT图形显示和处理5
- 删除QQ空间留言一直频繁怎么办,QQ空间留言一键删除
- android别踩白块小游戏,手摸手带你实现 小游戏别踩白块儿 -- 内有游戏链接
- 华为路由器 wifi网速慢解决办法
- 我的世界java版地狱_我的世界怎么去地狱_Minecraft地狱门建造教程 - 我的世界中文站...
- 抖音根据关键词获取视频列表接口调用展示