Android getDimension,getDimensionPixelOffset,getDimensionPixelSize

1.例如在onMeasure(int , int)方法中可能要获取自定义属性的值。如:

 1 TypedArray a = context.obtainStyledAttributes(attrs,
 2                 R.styleable.CascadeLayout);
 3
 4         try {
 5             // 获取xml文件中给自定义属性设置的值
 6             mHorizontalSpacing = a.getDimensionPixelSize(
 7                     R.styleable.CascadeLayout_horizontal_spacing,
 8                     getResources().getDimensionPixelSize(
 9                             R.dimen.cascade_horizontal_spacing));
10
11             mVerticalSpacing = a.getDimensionPixelSize(
12                     R.styleable.CascadeLayout_vertical_spacing,
13                     getResources().getDimensionPixelSize(
14                             R.dimen.cascade_vertical_spacing));
15             System.out.println("mHorizontalSpacing-->>" + mHorizontalSpacing
16                     + "  mVerticalSpacing" + mVerticalSpacing);
17         } catch (Exception e) {
18         } finally {
19             a.recycle();
20         }

但是我在自定义View中对CascadeLayout_horizontal_spacing和CascadeLayout_vertical_spacing进行设置

1 <com.example.fanghack003.view.CascadeLayout
2         android:layout_width="match_parent"
3         android:layout_height="match_parent"
4         cascade:horizontal_spacing="30dp"
5         cascade:vertical_spacing="20dp"
6         android:background="#FF00FF"
7         />

设置的值是但log后发现,mHorizontalSpacing和mVerticalSpacing的分别是60和40。

getDimension和getDimensionPixelOffset的功能类似,

都是获取某个dimen的值,但是如果单位是dp或sp,则需要将其乘以density

如果是px,则不乘。并且getDimension返回float,getDimensionPixelOffset返回int.

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

我用的手机的density是2.0所以所以会乘以2;

2.例子:

1     <resources>
2         <dimen name="dp_01">16dp</dimen>
3         <dimen name="px_01">16px</dimen>
4         <dimen name="sp_01">16sp</dimen>
5     </resources>  
 1     float a1=getResources().getDimension(R.dimen.dp_01);
 2     int a2=getResources().getDimensionPixelOffset(R.dimen.dp_01);
 3     int a3=getResources().getDimensionPixelSize(R.dimen.dp_01);
 4
 5     float b1=getResources().getDimension(R.dimen.px_01);
 6     int b2=getResources().getDimensionPixelOffset(R.dimen.px_01);
 7     int b3=getResources().getDimensionPixelSize(R.dimen.px_01);
 8
 9     float c1=getResources().getDimension(R.dimen.sp_01);
10     int c2=getResources().getDimensionPixelOffset(R.dimen.sp_01);
11     int c3=getResources().getDimensionPixelSize(R.dimen.sp_01);
12
13     Log.d("test", "getDimension= "+a1+", getDimensionPixelOffset="+a2+",getDimensionPixelSize="+a3);
14     Log.d("test", "getDimension= "+b1+", getDimensionPixelOffset="+b2+",getDimensionPixelSize="+b3);
15     Log.d("test", "getDimension= "+c1+", getDimensionPixelOffset="+c2+",getDimensionPixelSize="+c3);    
1     //Device (480*800,240dpi,density=1.5):
2     getDimension= 24.0, getDimensionPixelOffset=24,getDimensionPixelSize=24
3     getDimension= 16.0, getDimensionPixelOffset=16,getDimensionPixelSize=24
4     getDimension= 24.0, getDimensionPixelOffset=24,getDimensionPixelSize=24    
时间: 2024-12-10 01:39:27

Android getDimension,getDimensionPixelOffset,getDimensionPixelSize的相关文章

getDimension,getDimensionPixelOffset和getDimensionPixelSize的一点说明

getDimension和getDimensionPixelOffset的功能类似, 都是获取某个dimen的值,但是如果单位是dp或sp,则需要将其乘以density 如果是px,则不乘.并且getDimension返回float,getDimensionPixelOffset返回int. 而getDimensionPixelSize则不管写的是dp还是sp还是px,都会乘以denstiy. 代码如下: [html] view plaincopy <resources> <dimen 

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

getDimension()是基于当前DisplayMetrics进行转换,获取指定资源id对应的尺寸.文档里并没说这里返回的就是像素,要注意这个函数的返回值是float,像素肯定是int. getDimensionPixelSize()与getDimension()功能类似,不同的是将结果转换为int,并且小数部分四舍五入. getDimensionPixelOffset()与getDimension()功能类似,不同的是将结果转换为int,并且偏移转换(offset conversion,函

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

dimens.xml里写上三个变量: <dimen name="activity_vertical_margin1">16dp</dimen> <dimen name="activity_vertical_margin2">16px</dimen> <dimen name="activity_vertical_margin3">16sp</dimen> 读取这三个变量: fl

android: getDimension, getDimensionPixelOffset 和getDimensionPixelSize 区别

◆结论: getDimension 获取某个dimen的值,如果是dp或sp的单位,将其乘以density,如果是px,则不乘   返回float getDimensionPixelOffset 获取某个dimen的值,如果是dp或sp的单位,将其乘以density,如果是px,则不乘  返回int getDimensionPixelSize 则不管写的是dp还是sp还是px,都会乘以denstiy. ◆代码设置字体大小 tv_test.setTextSize(TypedValue.COMPLE

【转】Android android listview的HeadView左右切换图片(仿新浪,网易,百度等切换图片)

首先我们还是看一些示例:(网易,新浪,百度)      下面我简单的介绍下实现方法:其实就是listview addHeaderView.只不过这个view是一个可以切换图片的view,至于这个view怎么做,就要根据自己的喜爱了,实现有多种方法,下面我简单介绍一下. 第一种:ViewFlipper+GestureDetector 主布局就是一个listview,这里就不介绍了,我介绍下切换图片布局head_iamge.xml 1 <span style="font-size:12px;&

&lt;Android&gt;资源的访问,颜色、字符串、尺寸、XML、DRAWABLES资源分使用

1.资源的访问 代码中使用Context的getResources()方法得到Resources对象,访问自己定义的资源R.资源文件类型.资源文件名称,访问系统定义的资源android.R. 资源文件类型.资源文件名称. 在其他资源中引用资源一般格式为@[包名称:]资源类型/资源名称 android:textColor=”@color/opaque_red” 2.颜色资源的使用 1.颜色资源xml的定义 <?xml version="1.0" encoding="utf

Android照片墙完整版,完美结合LruCache和DiskLruCache

转载地址:http://blog.csdn.net/guolin_blog/article/details/34093441#comments 在上一篇文章当中,我们学习了DiskLruCache的概念和基本用法,但仅仅是掌握理论知识显然是不够的,那么本篇文章我们就来继续进阶一下,看一看在实战当中应该怎样合理使用DiskLruCache.还不熟悉DiskLruCache用法的朋友可以先去参考我的上一篇文章 Android DiskLruCache完全解析,硬盘缓存的最佳方案 . 其实,在真正的项

android listview的HeadView左右切换图片(仿新浪,网易,百度等切换图片)

首先我们还是看一些示例:(网易,新浪,百度) 显示效果都不错,可是手感就不一样了,百度最棒,网易还行,新浪就操作很不好,这里我说的是滑动切换图片.自己可以测试一下.不得不说牛叉的公司确实有哦牛叉的道理. 下面我简单的介绍下实现方法:其实就是listview addHeaderView.只不过这个view是一个可以切换图片的view,至于这个view怎么做,就要根据自己的喜爱了,实现有多种方法,下面我简单介绍一下. 第一种:ViewFlipper+GestureDetector 主布局就是一个li

Android单点触控技术,对图片进行平移,缩放,旋转操作

相信大家使用多点对图片进行缩放,平移的操作很熟悉了,大部分大图的浏览都具有此功能,有些app还可以对图片进行旋转操作,QQ的大图浏览就可以对图片进行旋转操作,大家都知道对图片进行缩放,平移,旋转等操作可以使用Matrix来实现,Matrix就是一个3X3的矩阵,对图片的处理可分为四个基础变换操作,Translate(平移变换).Rotate(旋转变换.Scale (缩放变换).Skew(错切变换),如果大家对Matrix不太了解的话可以看看这篇文章(点击查看),作者对每一种Matrix的变换写的