zoukankan      html  css  js  c++  java
  • 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 = "verticalhorizontal"
                        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"
            />

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

         

          

       

      






       

        

  • 相关阅读:
    108. Convert Sorted Array to Binary Search Tree
    How to check if one path is a child of another path?
    Why there is two completely different version of Reverse for List and IEnumerable?
    在Jenkins中集成Sonarqube
    如何查看sonarqube的版本 how to check the version of sonarqube
    Queue
    BFS广度优先 vs DFS深度优先 for Binary Tree
    Depth-first search and Breadth-first search 深度优先搜索和广度优先搜索
    102. Binary Tree Level Order Traversal 广度优先遍历
    How do I check if a type is a subtype OR the type of an object?
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/6849057.html
Copyright © 2011-2022 走看看