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
本文详细解释了Android中获取尺寸资源的三种方法:getDimension、getDimensionPixelOffset与getDimensionPixelSize的区别及应用场景,并通过示例代码展示了不同单位(dp、sp、px)下这些方法的具体表现。
1496

被折叠的 条评论
为什么被折叠?



