自定義控制項

2021-07-24 13:53:26 字數 1341 閱讀 1200

組合已有的控制項

完全自定義控制項

繼承特定的控制項(像textview,listview)

1.介面繪製流程

測量             擺放     繪製

measure -> layout -> draw

| | |

onmeasure -> onlayout -> ondraw 重寫這些方法, 實現自定義控制項

都在onresume()之後執行

view流程

onmeasure() (在這個方法裡指定自己的寬高) -> ondraw() (繪製自己的內容)

viewgroup流程

onmeasure() (指定自己的寬高, 所有子view的寬高)-> onlayout() (擺放所有子view) -> ondraw() (繪製內容)

2.實現

//在xml中實現自己的屬性

首先在value中的attrs.xml檔案中建立自己需要用到的屬性:

例如:"myview">

"myview_background"

format="reference" />

"myview_state"

format="boolean" />

在布局檔案宣告:

xmls:myview=""

然後就可以

"" android:layout_height = ""

myview:myview_background = "@mipmap/background"

myview:myview_state = "false"

>

這裡可以注意下宣告的時候xmls:myview="包名"和xmls:myview="/包名"的區別

//

private bitmap mmyviewbackgroundbitmap;

private

boolean mstate;

public

myview(context context, attributeset attrs)

//測量

@override

protected

void

onmeasure(int widthmeasurespec, int heightmeasurespec)

//繪製

@override

protected

void

ondraw(canvas canvas)

這裡繼承view,簡單的實現,就沒用到布局onlayout

自定義控制項 自定義鐘錶

private context mcontext 畫筆 private paint mpaint 控制項的寬 private int mwidth x方向的圓心座標 private int center 鐘錶的半徑 private int mradio 圓環的寬 private int stroke...

自定義控制項

首先是以下這幾項,attribute defaultproperty指定元件的預設屬性,toolboxdata指定當從ide工具中的 工具箱中拖動自定義控制項時為它生成的預設標記 defaultproperty text toolboxdata mycontrol runat server 上面這些...

自定義控制項

新聞管理 using system using system.collections.generic using system.linq using system.web using system.web.ui using system.web.ui.webcontrols namespace ne...