Android之尺寸getDimension、getDimensionPixelOffset 和 getDimensionPixelSize

在Android Studio开发中,为规范代码,会建议开发者使用/res/values/dimens.xml的自定义尺寸。尽管eclipse编译可以通过,但以下代码仍提示报错:

Android之尺寸getDimension、getDimensionPixelOffset 和 getDimensionPixelSize_第1张图片


好吧,我们先通过/res/values/dimens.xml自定义数值,了解一下尺寸(Dimension)不同用法:

  
    16dp  
    16px  
    16sp  
  

Android之尺寸getDimension、getDimensionPixelOffset 和 getDimensionPixelSize_第2张图片

执行结果:

Android之尺寸getDimension、getDimensionPixelOffset 和 getDimensionPixelSize_第3张图片


再来看看文档描述:

public float getDimension
Retrieve a dimensional for a particular resource ID. Unit conversions are based on the current DisplayMetrics associated with the resources.


public int getDimensionPixelSize
Retrieve a dimensional for a particular resource ID for use as a size in raw pixels. This isthe same as getDimension, except the returned value is converted to integer pixels for use as a size. A size conversion involves rounding the base value(四舍五入), and ensuring that a non-zero base value is at least one pixel in size.


public int getDimensionPixelOffset
Retrieve a dimensional for a particular resource ID for use as an offset in raw pixels. This is the same as getDimension, except the returned value is converted to integer pixels for you. An offset conversion involves simply truncating the base value to an integer(忽略小数点部分).


结论:

相同点:返回获取某个dimen的值,如果dimen单位是dp或sp,则需要将其乘以density(屏幕密度);如果单位是px,则不用。

不同点:
getDimension:返回类型为float,
getDimensionPixelSize:返回类型为int,由浮点型转成整型时,采用四舍五入原则。 
getDimensionPixelOffset:返回类型为int,由浮点型转成整型时,原则是忽略小数点部分。

你可能感兴趣的:(Android)