android Theme使用一

android项目使用的界面布局,控件属性,项目主题等等都是通过资源文件来实现的。

把这块搞明白了,对android开发是非常重要的。

一、attrs.xml

1.1 attrs文件摘要

attrs:这个文件里面放置自定义属性。android自带很多属性,比如我们布局的时候使用的layout_width,layout_height等等,android自带的attrs.xml文件在sdk/platforms/android-版本号/data/res/values/attrs.xml

 

1.2 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.2.1字段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中定义的数据怎么引用呢?


 

你可能感兴趣的:(android Theme使用一)