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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 nba篮球大师体力不够怎么办 一千米差10秒怎么办 四十岁以后体力和耐力差怎么办 打篮球一打比赛就紧张怎么办 耐克空军鞋鞋底边胶掉了怎么办 鞋底踩到老鼠胶怎么办 头蒙怎么办最快最有效 备孕老公压力大怎么办 宝宝太兴奋不睡怎么办 我很烦只睡三小时觉怎么办才好 柯基精力太旺盛怎么办 孩子学习熬夜精力不足怎么办 肺癌晚期吃不下饭怎么办 这俩天吃药太多肝肾功能不好怎么办 跑步跑得头疼晕怎么办 吃完辣的想吐怎么办 体育生暑假训练太累怎么办 高强度运动后性功能不好怎么办 运动后第二天全身酸痛怎么办 运动后心慌想吐怎么办 激素停后全身疼怎么办 运动完头晕想吐怎么办 跑了步全身酸痛怎么办 运动后全身没力气怎么办 学完游泳不会换气怎么办 猫不吃饭精神不好怎么办 运动完头晕目眩想吐怎么办 酒后第二天恶心想吐怎么办 剧烈运动后肌肉酸痛怎么办 剧烈运动后吐了怎么办 长跑后头晕想吐怎么办 运动后一直想吐怎么办 跑多了恶心想吐怎么办 剧烈运动恶心想吐怎么办 长跑之后 恶心想吐怎么办 喝咖啡后绞心痛怎么办 牛奶喝多了胃胀怎么办 运动后大量出汗头晕怎么办 屁股出汗淹的特别痛怎么办 运动完感觉很累怎么办 跑步后感觉很累怎么办