源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

android开发教程之自定义属性用法详解

  • 时间:2021-12-18 18:29 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:android开发教程之自定义属性用法详解
最近项目中经常需要用到自定义控件,因此自定义属性也是经常要用到的,在此说明一下自定义属性的用法: 自定义属性都存在于/value/attr.xml文件中,以如下格式存在。
[u]复制代码[/u] 代码如下:
<resource> <declare-styleable name="自定义属性名称"> <attr name="属性名称" format="属性种类"/> ...... </declare-styleable> </resource>
对于自定义属性中的format的值及其含义如下: format属性值:reference 、color、boolean、dimension、float、integer、string、fraction、enum、flag 1. reference:参考某一资源ID。 (1)属性定义:
[u]复制代码[/u] 代码如下:
<declare-styleable name = "名称">    <attr name = "background" format = "reference" /> </declare-styleable>
(2)属性使用:
[u]复制代码[/u] 代码如下:
<ImageView android:layout_width="42dip" android:layout_height="42dip" android:background="@drawable/图片ID" />
2.color:颜色值。 (1)属性定义:
[u]复制代码[/u] 代码如下:
<declare-styleablename="名称"> <attrname="textColor"format="color"/> </declare-styleable>
(2)属性使用:
[u]复制代码[/u] 代码如下:
<TextView android:layout_width="42dip" android:layout_height="42dip" android:textColor="#00FF00" />
3.boolean:布尔值。 (1)属性定义:
[u]复制代码[/u] 代码如下:
<declare-styleablename="名称"> <attrname="focusable"format="boolean"/> </declare-styleable>
(2)属性使用:
[u]复制代码[/u] 代码如下:
<Button android:layout_width="42dip" android:layout_height="42dip" android:focusable="true" />
4.dimension:尺寸值。 (1)属性定义:
[u]复制代码[/u] 代码如下:
<declare-styleablename="名称"> <attrname="layout_width"format="dimension"/> </declare-styleable>
(2)属性使用:
[u]复制代码[/u] 代码如下:
<Button android:layout_width="42dip" android:layout_height="42dip" />
5.float:浮点值。 (1)属性定义:
[u]复制代码[/u] 代码如下:
<declare-styleablename="AlphaAnimation"> <attrname="fromAlpha"format="float"/> <attrname="toAlpha"format="float"/> </declare-styleable>
(2)属性使用:
[u]复制代码[/u] 代码如下:
<alpha android:fromAlpha="1.0" android:toAlpha="0.7" />
6.integer:整型值。 (1)属性定义:
[u]复制代码[/u] 代码如下:
<declare-styleablename="AnimatedRotateDrawable"> <attrname="visible"/> <attrname="frameDuration"format="integer"/> <attrname="framesCount"format="integer"/> <attrname="pivotX"/> <attrname="pivotY"/> <attrname="drawable"/> </declare-styleable>
(2)属性使用:
[u]复制代码[/u] 代码如下:
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/图片ID" android:pivotX="50%" android:pivotY="50%" android:framesCount="12" android:frameDuration="100" />
7.string:字符串。 (1)属性定义:
[u]复制代码[/u] 代码如下:
<declare-styleablename="MapView"> <attrname="apiKey"format="string"/> </declare-styleable>
(2)属性使用:
[u]复制代码[/u] 代码如下:
<com.google.android.maps.MapView android:layout_width="fill_parent" android:layout_height="fill_parent" android:apiKey="0jOkQ80oD1JL9C6HAja99uGXCRiS2CGjKO_bc_g" />
8.fraction:百分数。 (1)属性定义:
[u]复制代码[/u] 代码如下:
<declare-styleablename="RotateDrawable"> <attrname="visible"/> <attrname="fromDegrees"format="float"/> <attrname="toDegrees"format="float"/> <attrname="pivotX"format="fraction"/> <attrname="pivotY"format="fraction"/> <attrname="drawable"/> </declare-styleable>
(2)属性使用:
[u]复制代码[/u] 代码如下:
<rotate xmlns:android="http://schemas.android.com/apk/res/android"   android:interpolator="@anim/动画ID" android:fromDegrees="0" android:toDegrees="360" android:pivotX="200%" android:pivotY="300%" android:duration="5000" android:repeatMode="restart" android:repeatCount="infinite" />
9.enum:枚举值。 (1)属性定义:
[u]复制代码[/u] 代码如下:
<declare-styleablename="名称"> <attrname="orientation"> <enumname="horizontal"value="0"/> <enumname="vertical"value="1"/> </attr> </declare-styleable>
(2)属性使用:
[u]复制代码[/u] 代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> </LinearLayout>
10.flag:位或运算。 (1)属性定义:
[u]复制代码[/u] 代码如下:
<declare-styleablename="名称"> <attrname="windowSoftInputMode"> <flagname="stateUnspecified"value="0"/> <flagname="stateUnchanged"value="1"/> <flagname="stateHidden"value="2"/> <flagname="stateAlwaysHidden"value="3"/> <flagname="stateVisible"value="4"/> <flagname="stateAlwaysVisible"value="5"/> <flagname="adjustUnspecified"value="0x00"/> <flagname="adjustResize"value="0x10"/> <flagname="adjustPan"value="0x20"/> <flagname="adjustNothing"value="0x30"/> </attr> </declare-styleable>
(2)属性使用:
[u]复制代码[/u] 代码如下:
<activity android:name=".StyleAndThemeActivity" android:label="@string/app_name" android:windowSoftInputMode="stateUnspecified|stateUnchanged | stateHidden"> <intent-filter> <actionandroid:name="android.intent.action.MAIN"/> <categoryandroid:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity>
特别要注意: 属性定义时可以指定多种类型值。 (1)属性定义:
[u]复制代码[/u] 代码如下:
<declare-styleablename="名称"> <attrname="background"format="reference|color"/> </declare-styleable>
(2)属性使用:
[u]复制代码[/u] 代码如下:
<ImageView android:layout_width="42dip" android:layout_height="42dip" android:background="@drawable/图片ID|#00FF00" />
下面说说AttributeSet与TypedArray在自定义控件中的作用: AttributeSet的作用就是在控件进行初始化的时候,解析布局文件中该控件的属性(keyeg:background)与该值(valueeg:@drawable/icon)的信息封装在AttributeSet中,传递给该控件(View)的构造函数。对于非Android自带的属性,在View类中处理时是无法识别的,因此需要我们自己解析。所以这就要用到另外一个类TypedArray。在AttributeSet中我们有属性名称,有属性值,但是控件如何知道哪个属性代表什么意思呢?这个工作就由TypedArray来做了。TypedArray对象封装了/values/attrs.xml中的styleable里定义的每个属性的类型信息,通过TypedArray我们就可以知道AttributeSet中封装的值到底是干什么的了,从而可以对这些数据进行应用。 AttributeSet就相当于一盒糖,TypedArray就相当于这盒糖上的标签说明,告诉用户每个糖的口味等。这盒糖有什么口味是由用户自己的styleable文件里面的内容来决定的。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部