Android自定义控件

  今天我们来讲一下 Android中自定义控件的介绍,在Android中, 我们一般写xml都是用的是单个的控件来完成的 ,可是,往往在一些项目中,单个控件有时是满足不了的,故此我们可以自定义控件 ,用自定义控件的好处是 一方面是更加灵活,另一方面在大数据量的情况下自定义控件的效率比写布局文件更高 ,其他地方要用此控件 只需要引用控件就可以了。

  下面来写一个自定义控件的和它需要注意的地方:

    1.建立一个xml文件 写你想要自定义的布局

    2.在res/values 创建一个attrs.xml 如下面的结构

 

    <resources>
    <declare-styleable name="myshow">
        <attr name="tvTitle" format="string"/>
        <attr name="titleMinLength" format="integer"/>
        <attr name="tvHint" format="string"/>
        <attr name="title" format="color"/>
        <attr name="tvValue" format="string"/>
    </declare-styleable>
</resources>


 详细介绍各个attr标签中的format属性的类型和多指定类型

《1》"reference" //引用 参考某一资源ID

     

<declare-styleable name = "名称">
                   <attr name = "background" format = "reference" />
            </declare-styleable> 

使用:
         

  <ImageView
                     android:layout_width = "42dp"
                     android:layout_height = "42dp"
                     android:background = "@drawable/图片ID"
                     />


《2》"color" //颜色

          

   <declare-styleable name = "名称">
                   <attr name = "textcolor" format = "color" />
            </declare-styleable>

使用:

 <TextView
                     android:layout_width = "42dp"
                     android:layout_height = "42dp"
                     android:textcolor = "#ffffff"
                     />


《3》 "boolean" //布尔值

     

 <declare-styleable name = "名称">
                   <attr name = "focusable" format = "boolean" />
            </declare-styleable>

使用:

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


《4》"dimension" //尺寸值
 

  <declare-styleable name = "名称">
                   <attr name = "layout_width" format = "dimension" />
            </declare-styleable>

使用:

     

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

《5》"float" //浮点值

    

 <declare-styleable name = "AlphaAnimation">
                   <attr name = "fromAlpha" format = "float" />
                   <attr name = "toAlpha" format = "float" />
            </declare-styleable>

使用:

      

  <alpha
                   android:fromAlpha = "1.0"
                   android:toAlpha = "0.5"
                   />

《6》"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"
                   />

《7》"string" //字符串

   

<declare-styleable name = "AlphaAnimation">
                   <attr name = "strName format = "string" />
                   <attr name = "strTitle" format = "string" />
            </declare-styleable>

使用:

 

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

《8》"fraction" //百分数,比如200%

   

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

《9》  "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\horizontal"
                    android:layout_width = "fill_parent"
                    android:layout_height = "fill_parent"
                   >     
    </LinearLayout>


《10》

  注意:属性定义时可以指定多个类型值

     

 <declare-styleable name = "名称">
                   <attr name = "background" format = "reference|color" />
            </declare-styleable>


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


    3.定义一个自定义的类  继承一个View  继承哪一个View 根据你实际情况来决定

       

   

      

   4.引用自定义的类到你需要的xml中

    <1>加入前 必须引用他当前的位置路径 如:

 xmlns:fx="http://schemas.android.com/apk/res/fx.com.bitmapsolution"

  <2>引用具体的控件和获取控件中的某个属性

     <fx.com.bitmapsolution.MyView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        fx:tvTitle="@string/title3"
        fx:titleMinLength="4"
        android:layout_marginTop="5dp"
        />

    到此  即完成了一个较简单自定义控件大笑  复杂点自定义控件 有时间再写一个 哈哈哈~~

     

      

   

  






   

    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值