自定義控件之圓形進度條

好久沒寫博客了,也好久沒看自定義控件了,前些日子有需求,所以就寫了個小demo,其實博客應該早點寫的,因爲這個錄屏和轉換gif耽誤事了。好了,先看看效果:

其實就是2個空心圓外加一個弧度畫的半圓,就可實現此效果,實現步驟:
1.畫外部大圓
2.畫弧度
3.畫裏邊圓
4.繪製文字
5.動畫(其實就是每隔多長時間重新繪製一次)

好了直接上代碼
獲取半徑和圓心座標,判斷下是寬高,以最短的爲依據

繪製的方法

畫各個部位的代碼,沒啥好講的吧

畫弧度,注意設置的漸變色

最後動畫的處理

就是不斷的重繪製就寫完成了,很簡單

 

注意這句話啊,

 mPaint.setStrokeCap(Paint.Cap.ROUND);//設置中斷處爲圓形

可以根據需求設置設置下

 

 

升級

既然完事了,那看看我們的需求,要比這個複雜一點點,上圖

多繪製了,兩條線,外加動畫

畫線注意角度的算法,數學忘了的,得自行腦補一下

角度是由3點鐘方向開始的

topAngle = (float) (Math.PI*2/360*330);

畫弧度也是由3點鐘方向開始的

canvas.drawArc(oval, 90, currentvalue, false, mPaint);//false : 不畫扇形弧邊,只畫弧長

最後動畫的實現,還是不斷的重繪製

當左邊畫完,右邊纔開始一點點的畫

我把兩個類發上去就可以直接用就行

添加控件到xml佈局,在activity中直接調用:avaterProgressCycle.setProgress(230);
AvaterProgressCycleSave1 是隻繪製圓的
AvaterProgressCycle 是升過級的

資源地址,點我下載:

https://download.csdn.net/download/kac930/10651279

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章