android自定义View_4——自定义属性的格式选择

  • reference - if it references another resource id (e.g, "@color/my_color", "@layout/my_layout")
  • color
  • boolean
  • dimension
  • float
  • integer
  • string
  • fraction
  • enum - normally implicitly defined
  • flag - normally implicitly defined

一:reference:引用资源ID,如图片,风格引用,String引用。

        <declare-styleable name = "名称">

                   <attr name = "background" format = "reference" />

            </declare-styleable>
        <ImageView
                    android:layout_width = "42dip"
                    android:layout_height = "42dip"
                    android:background = "@drawable/图片ID"/>

二:color:颜色值,如#00000000透明色。

            <declare-styleable name = "名称">

                   <attr name = "textColor" format = "color" />

            </declare-styleable>     

           <TextView
                    android:layout_width = "42dip"
                    android:layout_height = "42dip"
                    android:textColor = "#00FF00"/>

三:boolean:布尔值,true,false

            <declare-styleable name = "名称">

                   <attr name = "focusable" format = "boolean" />

            </declare-styleable>       

            <Button
                   android:layout_width = "42dip"
                   android:layout_height = "42dip"
                   android:focusable = "true"/>    

四:dimension:尺寸值。直接写数值:48dip,48dp,48sp,48xp

            <declare-styleable name = "名称">

                   <attr name = "layout_width" format = "dimension" />

            </declare-styleable>

            <Button
                   android:layout_width = "42dip"
                   android:layout_height = "42dip"/>

五:float:浮点值,比如透明度的设定0.7f。

       <declare-styleable name = "AlphaAnimation">

                   <attr name = "fromAlpha" format = "float" />
                   <attr name = "toAlpha" format = "float" />

            </declare-styleable>
       

      <alpha android:fromAlpha = "1.0f" android:toAlpha = "0.7f"/>

六:integer:整型值。比如设置动画的时间。

       <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>

        <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:字符串,文字什么的。

        <declare-styleable name = "MapView">
                   <attr name = "apiKey" format = "string" />
            </declare-styleable>

        <com.google.android.maps.MapView
                   android:layout_width = "fill_parent"
                   android:layout_height = "fill_parent"
                   android:apiKey = "0jOkQ80oD1JL9C6HAja99uGXCRiS2CGjKO_bc_g"/>

八:fraction:百分数。比如在设置旋转动画的中心的时候,设置自身的百分比。

       <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>

        <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:枚举值。比如控件的位置,左,中,右

        <declare-styleable name="名称">
                   <attr name="orientation">
                          <enum name="horizontal" value="0" />
                          <enum name="vertical" value="1" />
                   </attr>            
            </declare-styleable>

            <LinearLayout 
                    xmlns:android = "http://schemas.android.com/apk/res/android"
                    android:orientation = "vertical"
                    android:layout_width = "fill_parent"
                    android:layout_height = "fill_parent"/>

十:flag:位或运算,用的比较少,比如控制软键盘状态的时候用过。stateUnspecified | stateUnchanged|stateHidden

        <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>

         <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>

提示:这十个格式可以几个同时使用:

       <declare-styleable name = "名称">

                   <attr name = "background" format = "reference|color" />

            </declare-styleable>

       <ImageView
                  android:layout_width = "42dip"
                  android:layout_height = "42dip"
                  android:background = "@drawable/图片ID|#00FF00"/>

 

posted @ 2013-12-28 22:56  有情怀的人  阅读(665)  评论(0编辑  收藏  举报