android 畫環形的資料

2021-06-22 01:54:20 字數 2701 閱讀 8727

參考資料一:

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(

paint.anti_alias_flag));

引數1:圓的範圍大小

引數2:起始角度

引數3:圓心角角度,360為圓,180為半圓

引數4:中心

引數5:畫筆paint,可以設定畫線or填充,設定顏色,設定線的粗細等等第四個引數

最關鍵的是第乙個引數rectf,在什麼地方繪製圓弧就是由這個矩形的位置確定的。根據上文,這個rectf應該是內切圓弧的外圓(儘管沒畫,但還是有)。所以其左上點及右下點座標為:

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...