dimens.xml里写上三个变量:

  1. <dimen name="activity_vertical_margin1">16dp</dimen>
  2. <dimen name="activity_vertical_margin2">16px</dimen>
  3. <dimen name="activity_vertical_margin3">16sp</dimen>

读取这三个变量:

  1. float a1=getResources().getDimension(R.dimen.activity_vertical_margin1);
  2. int a2=getResources().getDimensionPixelOffset(R.dimen.activity_vertical_margin1);
  3. int a3=getResources().getDimensionPixelSize(R.dimen.activity_vertical_margin1);
  4. float b1=getResources().getDimension(R.dimen.activity_vertical_margin2);
  5. int b2=getResources().getDimensionPixelOffset(R.dimen.activity_vertical_margin2);
  6. int b3=getResources().getDimensionPixelSize(R.dimen.activity_vertical_margin3);
  7. float c1=getResources().getDimension(R.dimen.activity_vertical_margin3);
  8. int c2=getResources().getDimensionPixelOffset(R.dimen.activity_vertical_margin3);
  9. int c3=getResources().getDimensionPixelSize(R.dimen.activity_vertical_margin3);
  10. Log.i("test", "getDimension= "+a1+", getDimensionPixelOffset="+a2+",getDimensionPixelSize="+a3);
  11. Log.i("test", "getDimension= "+b1+", getDimensionPixelOffset="+b2+",getDimensionPixelSize="+b3);
  12. Log.i("test", "getDimension= "+c1+", getDimensionPixelOffset="+c2+",getDimensionPixelSize="+c3);

对于设备1(1280*720,160dpi,density=1.0):

  1. 09-29 19:34:15.202: I/test(9732): getDimension= 16.0, getDimensionPixelOffset=16,getDimensionPixelSize=16
  2. 09-29 19:34:15.202: I/test(9732): getDimension= 16.0, getDimensionPixelOffset=16,getDimensionPixelSize=16
  3. 09-29 19:34:15.202: I/test(9732): getDimension= 16.0, getDimensionPixelOffset=16,getDimensionPixelSize=16

对于设备2(480*800,240dpi,density=1.5):

  1. 09-29 19:35:07.376: I/test(5902): getDimension= 24.0, getDimensionPixelOffset=24,getDimensionPixelSize=24
  2. 09-29 19:35:07.376: I/test(5902): getDimension= 16.0, getDimensionPixelOffset=16,getDimensionPixelSize=24
  3. 09-29 19:35:07.376: I/test(5902): getDimension= 24.0, getDimensionPixelOffset=24,getDimensionPixelSize=24

可见getDimension和getDimensionPixelOffset的功能差不多,都是获取某个dimen的值,如果是dp或sp的单位,将其乘以density,如果是px,则不乘;两个函数的区别是一个返回float,一个返回int.

getDimensionPixelSize则不管写的是dp还是sp还是px,都会乘以denstiy.

getDimension,getDimensionPixelOffset和getDimensionPixelSize的更多相关文章

  1. android 通过getDimension,getDimensionPixelOffset和getDimensionPixelSize获取dimens.xml文件里面的变量值

    dimens.xml里写上三个变量: <dimen name="activity_vertical_margin1">16dp</dimen> <di ...

  2. android: getDimension, getDimensionPixelOffset 和getDimensionPixelSize 区别

    ◆结论: getDimension 获取某个dimen的值,如果是dp或sp的单位,将其乘以density,如果是px,则不乘   返回float getDimensionPixelOffset 获取 ...

  3. Android中getDimension,getDimensionPixelOffset和getDimensionPixelSize 区别

    getDimension 获取某个dimen的值,如果是dp或sp的单位,将其乘以density,如果是px,则不乘   返回float getDimensionPixelOffset 获取某个dim ...

  4. getDimension,getDimensionPixelOffset和getDimensionPixelSize的一点说明

    getDimension和getDimensionPixelOffset的功能类似, 都是获取某个dimen的值,但是如果单位是dp或sp,则需要将其乘以density 如果是px,则不乘.并且get ...

  5. Android getDimension,getDimensionPixelOffset,getDimensionPixelSize

    1.例如在onMeasure(int , int)方法中可能要获取自定义属性的值.如: TypedArray a = context.obtainStyledAttributes(attrs, R.s ...

  6. 【android】getDimension()、getDimensionPixelOffset()和getDimensionPixelSize()区别详解

    在自定义控件中使用自定义属性时,经常需要使用java代码获取在xml中定义的尺寸,相关有以下三个函数 getDimension() getDimensionPixelOffset() getDimen ...

  7. getDimension与getDimensionPixelOffset与getDimensionPixelSize的区别

    getDimension()                       返回float型px值     精确  getDimensionPixelOffset()     返回int型px值     ...

  8. getDimension()、getDimensionPixelOffset()和getDimensionPixelSize()区别详解

    getDimension()是基于当前DisplayMetrics进行转换,获取指定资源id对应的尺寸.文档里并没说这里返回的就是像素,要注意这个函数的返回值是float,像素肯定是int. getD ...

  9. [转]Android中dp,px,sp概念梳理以及如何做到屏幕适配

    http://blog.csdn.net/jiangwei0910410003/article/details/40509571 今天又开始我的App开发,因为之前一直做的是SDK,所以涉及到界面UI ...

随机推荐

  1. zuul进行rate limit

    maven <dependency> <groupId>com.marcosbarbero.cloud</groupId> <artifactId>sp ...

  2. 源码分析之tinyhttpd-0.1

    1. 简介: tinyhttpd是使用c语言开发的超轻量级http服务器,通过代码流程可以了解http服务器的基本处理流程, 并且涉及了网络套接字,线程,父子进程,管道等等知识点: 项目地址:http ...

  3. sunos kernel src

    https://github.com/eocallaghan/AuroraUX-SunOS https://github.com/zoyanhui/coroutine-libtask https:// ...

  4. 更新T1表,要添加一个条件A,但T1表没有A字段

    可以这样 如果T2表有A字段,T1.T2表有共同字段B,可以通过T2表A字段为条件查得B字段 再用B字段为条件去更新T1表 update T1 set C = '1' where B in(selec ...

  5. Deep Learning基础--参数优化方法

    1. 深度学习流程简介 1)一次性设置(One time setup)          -激活函数(Activation functions) - 数据预处理(Data Preprocessing) ...

  6. 让我们来一起学习OC吧

    在本分类中的接下来的将翻译http://rypress.com/tutorials/objective-c/index 通过每一章节的翻译,使得自己的OC基础扎实并分享给大家.

  7. 什么是Java内存模型(JMM)

    什么是java内存模型 缓存一致性问题 在现代计算机中,因为CPU的运算速度远大于内存的读写速度,因此为了不让CPU在计算的时候因为实时读取内存数据而影响运算速度,CPU会加入一层缓存,在运算之前缓存 ...

  8. linux命令(12):ping命令

    1.ping网关:ping –b 192.168.1.1 2.ping指定次数:ping -c 10 192.168.1.100 3.时间间隔和次数限制的ping:ping -c 10 -i 0.5 ...

  9. EF框架的优点是什么?

    在.Net Framework SP1微软包含一个实体框架(Entity Framework),此框架可以理解成微软的一个ORM产品.用于支持开发人员通过对概念性应用程序模型编程(而不是直接对关系存储 ...

  10. OpenCL学习笔记(二):并行编程概念理解

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. 并行编程的需求是显而易见的,其 ...