getDimension,getDimensionPixelOffset和getDimensionPixelSize的一点说明
getDimension和getDimensionPixelOffset的功能类似,
都是获取某个dimen的值,但是如果单位是dp或sp,则需要将其乘以density
如果是px,则不乘。并且getDimension返回float,getDimensionPixelOffset返回int.
而getDimensionPixelSize则不管写的是dp还是sp还是px,都会乘以denstiy.
代码如下:
- <resources>
- <dimen name="dp_01">16dp</dimen>
- <dimen name="px_01">16px</dimen>
- <dimen name="sp_01">16sp</dimen>
- </resources>
- float a1=getResources().getDimension(R.dimen.dp_01);
- int a2=getResources().getDimensionPixelOffset(R.dimen.dp_01);
- int a3=getResources().getDimensionPixelSize(R.dimen.dp_01);
- float b1=getResources().getDimension(R.dimen.px_01);
- int b2=getResources().getDimensionPixelOffset(R.dimen.px_01);
- int b3=getResources().getDimensionPixelSize(R.dimen.px_01);
- float c1=getResources().getDimension(R.dimen.sp_01);
- int c2=getResources().getDimensionPixelOffset(R.dimen.sp_01);
- int c3=getResources().getDimensionPixelSize(R.dimen.sp_01);
- Log.d("test", "getDimension= "+a1+", getDimensionPixelOffset="+a2+",getDimensionPixelSize="+a3);
- Log.d("test", "getDimension= "+b1+", getDimensionPixelOffset="+b2+",getDimensionPixelSize="+b3);
- Log.d("test", "getDimension= "+c1+", getDimensionPixelOffset="+c2+",getDimensionPixelSize="+c3);
LogCat中查看输出结果:
- //Device (480*800,240dpi,density=1.5):
- getDimension= 24.0, getDimensionPixelOffset=24,getDimensionPixelSize=24
- getDimension= 16.0, getDimensionPixelOffset=16,getDimensionPixelSize=24
- getDimension= 24.0, getDimensionPixelOffset=24,getDimensionPixelSize=24
使用如下代码时,发现字号不会变大,反而会变小:
size = (int) mText.getTextSize() + 1;
mText.setTextSize(size);
后来发现getTextSize返回值是以像素(px)为单位的,而setTextSize()是以sp为单位的,两者单位不一致才造成这样的结果。
这里可以用setTextSize()的另外一种形式,可以指定单位:
setTextSize(int unit, int size)
TypedValue.COMPLEX_UNIT_PX : Pixels
TypedValue.COMPLEX_UNIT_SP : Scaled Pixels
TypedValue.COMPLEX_UNIT_DIP : Device Independent Pixels
下面这样就正常了:
size = (int) mText.getTextSize() + 1;
mText.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);
getDimension,getDimensionPixelOffset和getDimensionPixelSize的一点说明的更多相关文章
- android 通过getDimension,getDimensionPixelOffset和getDimensionPixelSize获取dimens.xml文件里面的变量值
dimens.xml里写上三个变量: <dimen name="activity_vertical_margin1">16dp</dimen> <di ...
- android: getDimension, getDimensionPixelOffset 和getDimensionPixelSize 区别
◆结论: getDimension 获取某个dimen的值,如果是dp或sp的单位,将其乘以density,如果是px,则不乘 返回float getDimensionPixelOffset 获取 ...
- getDimension,getDimensionPixelOffset和getDimensionPixelSize
dimens.xml里写上三个变量: <dimen name="activity_vertical_margin1">16dp</dimen> <di ...
- Android中getDimension,getDimensionPixelOffset和getDimensionPixelSize 区别
getDimension 获取某个dimen的值,如果是dp或sp的单位,将其乘以density,如果是px,则不乘 返回float getDimensionPixelOffset 获取某个dim ...
- 【android】getDimension()、getDimensionPixelOffset()和getDimensionPixelSize()区别详解
在自定义控件中使用自定义属性时,经常需要使用java代码获取在xml中定义的尺寸,相关有以下三个函数 getDimension() getDimensionPixelOffset() getDimen ...
- Android getDimension,getDimensionPixelOffset,getDimensionPixelSize
1.例如在onMeasure(int , int)方法中可能要获取自定义属性的值.如: TypedArray a = context.obtainStyledAttributes(attrs, R.s ...
- getDimension与getDimensionPixelOffset与getDimensionPixelSize的区别
getDimension() 返回float型px值 精确 getDimensionPixelOffset() 返回int型px值 ...
- getDimension()、getDimensionPixelOffset()和getDimensionPixelSize()区别详解
getDimension()是基于当前DisplayMetrics进行转换,获取指定资源id对应的尺寸.文档里并没说这里返回的就是像素,要注意这个函数的返回值是float,像素肯定是int. getD ...
- [转]Android中dp,px,sp概念梳理以及如何做到屏幕适配
http://blog.csdn.net/jiangwei0910410003/article/details/40509571 今天又开始我的App开发,因为之前一直做的是SDK,所以涉及到界面UI ...
随机推荐
- IDataReader转换成list通用方法
public static IList<T> ReaderToList<T>(this IDataReader dr) { //DateTime dt = DateTime.N ...
- 故事板(Storyboard) 、 iPad编程 、 App和VC的生命周期
1 创建动态TableView 1.1 问题 动态表视图就是显示多少分区,多少行以及每一行的显示内容都是根据数据源来决定.之前我们学过用xib展示动态表视图,本案例将学习如何使用Storyboard展 ...
- 【函数】oracle translate() 详解+实例
一.语法: TRANSLATE(string,from_str,to_str) 二.目的 返回将(所有出现的)from_str中的每个字符替换为to_str中的相应字符以后的string.TRAN ...
- zendstudio添加注释快捷键
最常用的是ctrl+/来添加行注释 方法是选中代码,按ctrl+/就可以注释掉代码.再按ctrl+/可以去掉注释 添加块注释时,现加/,再加*,再按enter即可添加块注释.
- 《JavaScript Ninja》之闭包
闭包 闭包是什么,它们是如何工作的 闭包 是一个函数在创建时允许该自身函数访问并操作该自身函数之外的变量时所创建的作用域. 即:闭包可以让函数访问所有的变量和函数,只要这些变量和函数存在于该函数声明时 ...
- 特性节点Attribute
深入理解DOM节点类型第六篇——特性节点Attribute document.getElementById('b_results').attributes[0].textContent documen ...
- Maven构建项目速度慢问题解决
Maven项目进行构件的时候速度会很慢,由于maven每次进行创建的时候回去网上下载artheType-catalog.xml文件,而且,现在这个文件比较大,已经接近5M的大小,所以,在网速不好的情况 ...
- Linux 常用命令笔记
Linux 常用命令笔记 1. locate locate:用来定位文件的位置,如:locate a.txt 但是这个命令有延迟,也就是新建的文件不一定能搜索到,如果非要找到新建的文件可以使用 upd ...
- C++ 中的C_str()函数用法
语法: const char *c_str(); c_str()函数返回一个指向正规C字符串的指针常量, 内容与本string串相同. 这是为了与c语言兼容,在c语言中没有string类型,故必须通过 ...
- ZMMR107-批量更改PO经价值
************************************************************************ Title : ZMMR107 ** Applicat ...