关于android尺寸单位换算
来源:互联网 发布:mac版围棋对弈软件 编辑:程序博客网 时间:2024/05/17 08:48
今天看到经常用的一个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的出现
0 0
- 关于android尺寸单位换算
- Android 各尺寸单位间的换算
- 尺寸单位换算
- SAP关于单位换算
- android单位换算
- android 单位换算
- Android 单位换算总结
- UI设计规范之Android尺寸单位换算及切图规范
- 关于尺寸单位
- android 手机的单位换算
- Android开发中的单位换算
- Android 屏幕 尺寸 单位
- Android 屏幕尺寸单位
- Android尺寸单位
- Android中的尺寸单位
- Android尺寸单位总结
- Android中尺寸单位
- android尺寸单位
- 2015年乌鲁木齐德华医院爱鼻日公益活动火爆预约中
- Linux tty字符终端下VIM显示混乱的解决方法
- DDMS中File Explorer无法查看data/data文件解决办法
- 【OC易错】OC易出错的地方
- android:versionCode和android:versionName 用途
- 关于android尺寸单位换算
- JNI回调时线程安全的处理
- Swift函数的使用
- 2015-3-31 浏览器本地缓存问题
- 【C++基础之八】函数指针和回调函数
- uboot 读书笔记【1】
- 乌鲁木齐爱德华医院2015年全国第13个爱鼻日健康公益活动
- 中国银行支付接口(ecshop版)
- Arm Reference