android declare-styleable中format 参考说明

我们在做项目的时候,由于Android自带的属性不能满足需求,android提供了自定义属性的方法,其中的format是做什么用的?以及如何使用它?下面列出一些常用的。

  • reference:参考某一资源ID。
  • color:颜色值。
  • boolean:布尔值。
  • dimension:尺寸值。
  • float:浮点值。
  • integer:整型值。
  • string:字符串。
  • fraction:百分数。
  • enum:枚举值。
  • flag:位或运算。

具体示例如下:

  • 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"
    />
    
  • 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"
    />
    
  • 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"
      />
    
  • dimension:尺寸值。
    1. 属性定义:
    <declare-styleable name = "名称">
        <attr name = "layout_width" format = "dimension" />
    </declare-styleable>
    

    2.属性使用:

    <Button
            android:layout_width = "42dip"
            android:layout_height = "42dip"
    />
    
  • 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"
    />
    
  • 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"
      />
    

     

  • 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"
     />
    
  • 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"
        />
    
  • enum:枚举值。
    1. 属性定义:
    <declare-styleable name="名称">
        <attr name="orientation">
        <enum name="horizontal" value="0" />
        <enum name="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>
    
  • flag:位或运算。
    1. 属性定义:
    <declare-styleable name="名称">
         <attr name="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" />
            <category android: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"
/>

 

 

2 Comments