Android自定义属性我们自定义控件中是经常用到的,自定义属性可以在我们的xml布局文件中使用,这样可以减少代码量,也增加了代码的健壮性和可阅读性。所以,在掌握自定义控件之前要首先掌握好怎样自定义属性。
首先来看看自定属性都有哪些?
values/attrs.xml 中可定义的属性类型有如下几个:
1. reference:参考某一资源ID。<attr name = "background" format = "reference" />
2. color:颜色值。<attr name = "textColor" format = "color" />
3. boolean:布尔值<attr name = "focusable" format = "boolean" />
4. dimension:尺寸值。<attr name = "layout_width" format = "dimension" />
5. float:浮点值。<attr name = "fromAlpha" format = "float" />
6. integer:整型值<attr name = "frameDuration" format="integer" />
7. string:字符串。<attr name = "text" format = "string" />
8. fraction:百分数<attr name = "pivotX" format = "fraction" /><attr name = "pivotY" format = "fraction" />
9. enum:枚举值
<attr name="orientation"><enum name="horizontal" value="0" /><enum name="vertical" value="1" /></attr>
10. flag:位或运算<attr name="windowSoftInputMode"><flag name = "stateUnspecified" value = "0" /><flag name = "stateUnchanged" value = "1" /></attr>
11.多类型。<attr name = "background" format = "reference|color" />
以上的所有属性中,属性名称(name)可以随便命名。 format 就很简单了,表示该属性是什么类型的。
1. values/attrs.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="custom_view">//这是属性集的名字,在我们java中找到属性的时候需要用到。
<attr name="custom_id" format="integer"/>属性名和属性类型,属性名在我们xml中和java文件中都可以用到
<attr name="textSize" format="dimension"/>
</declare-styleable>
</resource>
2. Java文件中找到属性
TypedArray a = context.obtainStyledAttributes(attrs,R.styleable.custom_view);//R.styleable.custom_view-->对应的是我们的attrs.xml,中的 declare-styleable 节点的 name
mSrc = a.getDrawable(R.styleable.custom_view_textsize);//这里获取属性的时候就好像json一样根据不同的类型进行get
3. xml中引用
首先要定义名称(app)和引入包名(com.fwl.myseekbar)/apk/res-->这一段也不要忘记了,也可以直接使用auto
xmlns:app="http://schemas.android.com/apk/res/com.fwl.myseekbar"
使用:
app:endValue="300"
app-->名字、endValue-->属性名、300-->属性值
以上只是简单的介绍了自定义属性的一些东西,实际使用还要再斟酌斟酌。