參考資料一:
public void drawarc(rectf oval, float startangle, float sweepangle,boolean usecenter, paint paint)
本例演示了drawarc的四種不同用法,
1. 填充圓弧但不含圓心:
mpaints[0]= new paint();
mpaints[0].setantialias(true);
mpaints[0].setstyle(paint.style.fill);
mpaints[0].setcolor(0x88ff0000);
musecenters[0]= false;
2. 填充圓弧帶圓心(扇形)
mpaints[1]= new paint(mpaints[0]);
mpaints[1].setcolor(0x8800ff00);
musecenters[1]= true;
3. 只繪圓周,不含圓心
mpaints[2]= new paint(mpaints[0]);
mpaints[2].setstyle(paint.style.stroke);
mpaints[2].setstrokewidth(4);
mpaints[2].setcolor(0x880000ff);
musecenters[2]= false;
4. 只繪圓周,帶圓心(扇形)
mpaints[3]= new paint(mpaints[2]);
mpaints[3].setcolor(0x88888888);
musecenters[3]= true;
本例的ondraw
protected void ondraw(canvascanvas)
msweep +=sweep_inc;
if (msweep> 360)
mbigindex = (mbigindex+ 1) %movals.length;
}
invalidate();
}
同樣ondraw之中呼叫invalidate(),會再觸發ondraw,從而不停重新整理顯示,startangle,sweepangle周而復始,形成動畫效果,最上的大圖順序顯示drawarc的這四種用法:
paint.style.stroke 表示當前只繪製圖形的輪廓,而paint.style.fill表示填充圖形。
參考資料二:
用drawcircle不中了,經查android提供了繪製圓弧的函式drawarc,參考也可以看這裡
canvas.drawarc(new rectf(0, 0, 128, 128), 0, 360, true, new paint(最關鍵的是第乙個引數rectf,在什麼地方繪製圓弧就是由這個矩形的位置確定的。根據上文,這個rectf應該是內切圓弧的外圓(儘管沒畫,但還是有)。所以其左上點及右下點座標為:paint.anti_alias_flag));
引數1:圓的範圍大小
引數2:起始角度
引數3:圓心角角度,360為圓,180為半圓
引數4:中心
引數5:畫筆paint,可以設定畫線or填充,設定顏色,設定線的粗細等等第四個引數
rectf rect2 = new rectf(center-(innercircle + 1 +ringwidth/2),center-(innercircle + 1 +ringwidth/2), center+(innercircle + 1 +ringwidth/2), center+(innercircle + 1 +ringwidth/2));
為了繪製出透明度不同的圓環分兩部來繪製:
this.paint.setargb(200, 127, 255, 212);
this.paint.setstrokewidth(ringwidth);
//繪製不透明部分
canvas.drawarc(rect2, 180+startangle, 90, false, paint);
canvas.drawarc(rect2, 0+startangle, 90, false, paint);
//繪製透明部分
this.paint.setargb(30, 127, 255, 212);
canvas.drawarc(rect2, 90+startangle, 90, false, paint);
canvas.drawarc(rect2, 270+startangle, 90, false, paint);
上面的**當startangle = 0時,繪製的是乙個靜態的透明度交替的圓弧。接著要讓它轉起來。增加**:
startangle+=10;
if(startangle == 180)
startangle = 0;
事實上後兩句也可以不增加,仿照前文su***ceview繪製旋轉動畫的例子用這種求餘的思想,(rotate += 48) % 360,把上面角度也弄個%360,也是可以的。
剩下的事就是讓這個東西迴圈執行了。在super.ondraw(canvas);這句**後面加 invalidate();就可以了!透明圓環就轉起來了。
**:
android開發 畫虛線
public class dashview extends view public dashview context context,attributeset attrs override protected void onmeasure int widthmeasurespec,int heigh...
Android之畫虛線技巧
ui設計圖中,經常需要畫水平和豎直的虛線,本文實現虛線效果。在drawable中建立dash horizontal view.xml檔案 在布局中引用這個shape檔案,完成水平虛線的繪製。有幾個關鍵點 dashwidth 是指虛線中每乙個實線的寬度,dashgap 是指虛線中每乙個間隔的寬度,如果...
基於Angular框架封裝的畫環形進度條元件
1.首先在我們的plugin目錄下將本文件附件中的js檔案引入,這個元件是以angular工廠模式建立canvas物件,以angular指令控制dom 2.然後在html檔案中在需要畫圖的地方呼叫元件,以下為html的demo div class test ng controller testctr...