android项目使用的界面布局,控件属性,项目主题等等都是通过资源文件来实现的。
把这块搞明白了,对android开发是非常重要的。
attrs:这个文件里面放置自定义属性。android自带很多属性,比如我们布局的时候使用的layout_width,layout_height等等,android自带的attrs.xml文件在sdk/platforms/android-版本号/data/res/values/attrs.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleablename="TextAppearance">
<attrname="android:fontFamily" format=”color”/>
<attrname="android:textAllCaps" />
<attrname="android:textColor" />
</declare-styleable>
</resources>
每个attr代表一个属性,字段format表示这个属性代表的是哪一种资源
1. reference:参考某一资源ID
(1)属性定义:
<declare-styleable name = "名称">
<attr name ="background" format = "reference" />
</declare-styleable>
(2)属性使用:
<ImageView
android:layout_width ="42dip"
android:layout_height ="42dip"
android:background ="@drawable/图片ID"/>
2. color:颜色值
(1)属性定义:
<declare-styleable name = "名称">
<attr name ="textColor" format = "color" />
</declare-styleable>
(2)属性使用:
<TextView
android:layout_width ="42dip"
android:layout_height ="42dip"
android:textColor ="#00FF00"/>
3.boolean:布尔值
(1)属性定义:
<declare-styleable name = "名称">
<attr name ="focusable" format = "boolean" />
</declare-styleable>
(2)属性使用:
<Button
android:layout_width ="42dip"
android:layout_height ="42dip"
android:focusable ="true"/>
4. dimension:尺寸值
(1)属性定义:
<declare-styleable name = "名称">
<attr name ="layout_width" format = "dimension" />
</declare-styleable>
(2)属性使用:
<Button
android:layout_width ="42dip"
android:layout_height ="42dip"/>
5.float:浮点值
(1)属性定义:
<declare-styleable name = "AlphaAnimation">
<attr name ="fromAlpha" format = "float" />
<attr name ="toAlpha" format = "float" />
</declare-styleable>
(2)属性使用:
<alpha
android:fromAlpha ="1.0"
android:toAlpha ="0.7"/>
6. integer:整型值
(1)属性定义:
<declare-styleable name = "AnimatedRotateDrawable">
<attr name ="visible" />
<attr name ="frameDuration" format="integer" />
<attr name ="framesCount" format="integer" />
<attr name ="pivotX" />
<attr name ="pivotY" />
<attr name ="drawable" />
</declare-styleable>
(2)属性使用:
<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)属性定义:
<declare-styleable name = "MapView">
<attr name ="apiKey" format = "string" />
</declare-styleable>
(2)属性使用:
<com.google.android.maps.MapView
android:layout_width ="fill_parent"
android:layout_height ="fill_parent"
android:apiKey ="0jOkQ80oD1JL9C6HAja99uGXCRiS2CGjKO_bc_g"/>
8. fraction:百分数
(1)属性定义:
<declare-styleable name="RotateDrawable">
<attr name ="visible" />
<attr name ="fromDegrees" format = "float" />
<attr name ="toDegrees" format = "float" />
<attr name = "pivotX" format= "fraction" />
<attr name ="pivotY" format = "fraction" />
<attr name ="drawable" />
</declare-styleable>
(2)属性使用:
<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)属性定义:
<declare-styleable name="名称">
<attr name="orientation">
<enumname="horizontal" value="0" />
<enumname="vertical" value="1" />
</attr>
</declare-styleable>
(2)属性使用:
<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)属性定义:
<declare-styleable name="名称">
<attrname="windowSoftInputMode">
<flag name ="stateUnspecified" value = "0" />
<flag name ="stateUnchanged" value = "1" />
<flag name ="stateHidden" value = "2" />
<flag name ="stateAlwaysHidden" value = "3" />
<flag name ="stateVisible" value = "4" />
<flag name ="stateAlwaysVisible" value = "5" />
<flag name ="adjustUnspecified" value = "0x00" />
<flag name ="adjustResize" value = "0x10" />
<flag name ="adjustPan" value = "0x20" />
<flag name ="adjustNothing" value = "0x30" />
</attr>
</declare-styleable>
(2)属性使用:
<activity
android:name =".StyleAndThemeActivity"
android:label ="@string/app_name"
android:windowSoftInputMode== "stateUnspecified|stateUnchanged|stateHidden">
<intent-filter>
<action android:name ="android.intent.action.MAIN" />
<categoryandroid:name = "android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
注意:属性定义时可以指定多种类型值。
(1)属性定义:
<declare-styleable name = "名称">
<attr name ="background" format = "reference|color" />
</declare-styleable>
(2)属性使用:
<ImageView
android:layout_width ="42dip"
android:layout_height ="42dip"
android:background ="@drawable/图片ID|#00FF00"/>
以前我们布局的时候使用一个属性都是android:开头。这是表示我们使用的是android自带的属性,那我们在attrs.xml中定义的数据怎么引用呢?