標籤:布局 控制項 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自訂控制項