我们如果想获取android的资源文件,可以使用context.getresource.getXXX得到,也可以通过TypedArray得到,对于我来说TypedArray还是比较陌生,最近一直使用RecyclerView做东西,其中分割线ItemDecoration可以使用TypedArray来获取本地的Drawable文件,所以对他产生了情趣,鉴于网上没有详细的TypedArray的译文,今天打算把TypedArray通过自己的理解翻译一下,仅供参考,不喜勿喷啊 ~~
先po上地址:如果没翻墙:http://www.android-doc.com/reference/android/content/res/TypedArray.html
如果翻墙了:https://developer.android.com/reference/android/content/res/TypedArray.html
路径其实只是host地址变了下而已。
不难看出,TypedArray在api1的时候就已经定义好了。
TypedArray是存储资源数组的容器,他可以通过obtaiStyledAttributes()方法创建出来。不过创建完后,如果不在使用了,请注意调用recycle()方法把它释放。
他可以通过检索res资源中结构的特定值的索引的到对应的资源。所以换句话说,通过他能够得到我们想要的资源。
官方api还列出了TypedArray的公共方法:
这些方法大致的意思是通过 “资源索引“(index)可以得到相应的资源,其中有参数的方法第一参数大体来说都是资源对应的索引,如果有的方法有两个参数,那么
第二个参数就是返回的默认值。
好了,现在我们看得到TypeArray的第一个方法:
调用obtainStyledAttributes方法,会返回一个TypedArray,持有属性排序的属性值。
如果传入的第一个参数AttributeSet指定的是一个样式,那么这个样式将会被应用到 定义好的基本属性的顶部。
确保在使用完TypedArray后,用TypedArray.recycle()方法释放。
再来看看这个方法的参数
在决定指定属性值的时候,有四个输入项会参与决定。
这四个项分别是
1.提供的属性集
2.属性集中声明的样式(style)
3.通过defStyleAttr和defStyleRes指定的属性
4.在主题中的属性值
任何一项输入项都是被认为有序的,并且第一项,也就是属性集拥有决定权,换句话说,如果在属性集(AttributSet)中你指定的button的字体颜色是黑色,那么不管其他样式风格怎么设定,都不会改变他的属性。
剩下的就是参数了 。
为了方便,还提供了三种方式:
来获取TypedArray。
待更新TypedArray的具体用法,有时间了再上。