自定義控制項一窺

2021-07-15 12:06:38 字數 1280 閱讀 8899

基礎api

canvas這一塊還是蠻複雜,並不大算一口把它啃下來,效果不好還費力。先一點點看方法文件吧

public void drawarc (rectf oval, float startangle, float sweepangle, boolean usecenter, paint paint)

draw the specified arc, which will be scaled to fit inside the specified oval.

if the start angle is negative or >= 360, the start angle is treated as start angle modulo 360.

這是說畫一段弧線,」inside」這個傳入的矩形裡,這個意思肯定是貼邊的,術語叫什麼內切線?起始角度如果大於360,取餘。

引數

oval :指定圓弧的外輪廓矩形區域。

startangle: 圓弧起始角度,單位為度。

sweepangle: 圓弧掃過的角度,順時針方向,單位為度。

usecenter: 如果為true時,在繪製圓弧時將圓心包括在內,通常用來繪製扇形。

paint: 繪製圓弧的畫板屬性,如顏色,是否填充等。

弧線花完了,剩下就是畫個圓drawcircle,並在園裡drawtext。這兩個比較簡單,不細說。

text就是要顯示進度progress,這樣監聽進度變更的時候呼叫我們自己設定的乙個方法setprogress就行了

public

void

setprogress(int progress)

這裡主要是用postinvalidate重繪view,與invalidate的區別是可以在非ui執行緒呼叫。

讓我頭疼的是嘗試了很多次都沒有顯示出來。後來才發現我沒有在正確的位置呼叫getwidth。

我定義了乙個成員變數mradius,作為畫圓的半徑,建構函式裡用getwidth給它賦值,但是這個時候自定義view還並沒有執行onmeasure,這個時候getwidth亦或getheigh都是0,所以我們不能在構造方法裡賦值,那麼在ondraw裡賦值嗎?

還有drawarc這個方法需要傳入乙個rectf,那麼這個rectf物件顯然是最好不要在ondraw中new出來,因為跟著進度改變不斷重繪,ondraw也不不斷被呼叫

自定義控制項《一》

view的工作流主要是指measure layout draw,即測量 布局和繪製。案例 做乙個圓形的控制項 public class circleview extends view public circleview context context,attributeset attrs publi...

自定義控制項 一

定義控制項 編寫自己的伺服器控制項從而來補充常用控制項的不足或封裝自己在開發中常用 功能 外觀的控制項 建立自定義控制項 方法一 新建asp.net資料夾 新建類 cs 一般將類設定為public 並指定命名空間 該類 繼承 system.web.ui.webcontrols 或其子類 textbo...

自定義控制項 自定義鐘錶

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