Android自訂控制項

來源:互聯網
上載者:User

標籤:布局   控制項   layout   

  今天我們來講一下 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"
        />

    到此  即完成了一個較簡單自訂控制項  複雜點自訂控制項 有時間再寫一個 哈哈哈~~

      

   

   

  






   

    

Android自訂控制項

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.