hongyang的博文深入理解Android中的自定义属性 学习笔记
来源:互联网 发布:淘宝网处罚考试50题 编辑:程序博客网 时间:2024/05/24 06:18
自定义view属性已经写过不少了,但每次写时都是网上找个文章按步骤照葫芦画瓢,没有好好分析,尤其是对AttributeSet和TypedArray不太了解,今天看了hongyang的博文深入理解Android中的自定义属性,感觉认识进一步加深了,在此作下总结.
- AttributeSet里面包含了我们在布局文件里面给view设置的所有属性,代码获取属性值的方法如下
public MyView(Context context, AttributeSet attrs) { super(context, attrs); int count = attrs.getAttributeCount(); for (int i = 0; i < count; i++) { String attrName = attrs.getAttributeName(i); String attrVal = attrs.getAttributeValue(i); Log.e(TAG, "attrName = " + attrName + " , attrVal = " + attrVal); } }
- 自定义属性声明文件里的每一个attr属性名都会生成一个id值存在于R文件中(系统每个attr属性名都有一个id值来标识,就像系统其它资源比如drawable中的图标都有唯一id标识一样),并且这些id以一个int数组的形式放在一起,通过R.styleable.test可以访问这些属性名id数组
<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="test"> <attr name="text" format="string" /> <attr name="testAttr" format="integer" /> </declare-styleable></resources>
通过方法TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.test)获取我们想要的属性数组(attrs包含我们所设置的所有属性,通过这个数组可以返回我们所关心的,即R.styleable.test属性名id标识的,也就是我们自定义的属性),然后TypedArray的系列get方法可以获取我们所需要的具体属性值
attrs.xml里面的declare-styleable以及item,android会根据其在R.java中生成一些常量方便我们使用(aapt干的),本质上,我们可以不声明declare-styleable仅仅声明所需的属性即可。
比如写成如下形式
<?xml version="1.0" encoding="utf-8"?><resources> <attr name="testAttr" format="integer" /></resources>
我们在View的构造方法中,可以通过AttributeSet去获得自定义属性的值,但是比较麻烦,而TypedArray可以很方便的便于我们去获取。我们在自定义View的时候,可以使用系统已经定义的属性。
0 0
- hongyang的博文深入理解Android中的自定义属性 学习笔记
- Android 深入理解Android中的自定义属性
- Android 深入理解Android中的自定义属性
- Android 深入理解Android中的自定义属性
- 【Android】深入理解Android中的自定义属性
- Android 深入理解Android中的自定义属性
- Android 深入理解Android中的自定义属性
- Android 深入理解Android中的自定义属性
- Android 深入理解Android中的自定义属性
- Android 深入理解Android中的自定义属性
- Android 深入理解Android中的自定义属性
- Android 深入理解Android中的自定义属性
- Android 深入理解Android中的自定义属性
- Android 深入理解Android中的自定义属性
- Android 深入理解Android中的自定义属性
- android 深入理解Android中的自定义属性
- Android 深入理解Android中的自定义属性
- Android 深入理解Android中的自定义属性
- POJ 1321 棋盘问题 dfs
- 树的遍历方式(不知道对不对)
- CodeForces 545A
- C++中引用(&)的用法和应用实例
- Spark100期公益大讲堂
- hongyang的博文深入理解Android中的自定义属性 学习笔记
- hdu-2100-lovekey
- Linux常用命令大全
- Unity NGUI实现2048(三)反编译APK文件
- leetcode--WildcardMatching
- Mac OS X 10.10中配置Apache + PHP
- Linux $HOME下文件记录(Vim/Shell)
- Python 3.4 学习总结(1)
- KIDx's Pagination (周赛1)