自定義View的旅程 canvas畫弧線

2021-07-12 01:38:09 字數 1911 閱讀 5209

畫弧線用到的方法drawarc

canvas畫弧線的方法drawarc有兩個過載方法

public

void

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

public

void

drawarc (float left, float top, float right, float bottom, float startangle, float sweepangle, boolean usecenter, paint paint)

這兩個方法大同小異,其中第二個方法中的left,top,right,bottom就是用於生成第乙個方法中的oval的

recf oval = new recf(left,top,right,bottom);
現在我們再來看看其他的引數,

首先看看startangle,開始繪製時的角度,當這個角度為0時,正好和時鐘3點鐘方向一致,然後順時針方向繪製圓弧。sweepangle就是弧線順時針旋轉的角度,這個角度從3點鐘方向開始,沿順時針方向的角度,下圖即為startangle等於0,sweepangle等於90的:

api中說當sweepangle大於360度的時候相當於繪製了乙個閉環,如下圖:

上面兩個**執行的結果是一致的。

在看看usecenter這個值,上面**中該值都為false,如果設定成true會怎麼樣呢,來試試:

可以看到起點和終點與圓心相連線了。

我剛開始研究的時候,paint初始化的時候我只這樣寫的:

marcpaint = new paint();

marcpaint.setcolor(color.parsecolor("#ff6600"));

於是我得到的圖是這麼乙個東西:

後來才發現忘了關鍵的一步:

marcpaint.setstyle(paint.style

.stroke);

這樣就可以得到乙個細線話的弧線了,如果你想定製弧線的寬度還可以這樣設定:

marcpaint.setstrokewidth(30.0f);//線寬
好了,自定義view的旅程才剛剛開始!

Android自定義View 自定義元件

自繪控制項也分兩種,自定義元件和自定義容器,自定義元件是繼承view類,自定義容器時繼承viewgrounp 今天主要分析下自定義元件 還是舉個例子來的實際些,假如我們要畫乙個最簡單的textview,首先想到的就是canvas.drawtext 方法,怎麼畫了?還是得一步一步來 1 寫乙個myte...

自定義view之自定義屬性

1.首先在res的values檔案下新建乙個名為attrs.xml檔案 在該xml檔案中編寫我們需要的屬性 declare styleable後面的name必須要與接下來要自定義的view名一致。attr 後面的name表示需要自定義的屬性,format表示這些屬性的型別 2.新建乙個類繼承text...

自定義view 二

自定義view的最重要的乙個部分是自定義它的外觀。根據你的程式的需求,通過ondraw方法實現繪製。在ondraw中,會傳遞給你乙個canvas。canvas封裝了繪製圖形的方法。還需要自定義乙個 paint去定義顏色樣式的填充 簡單來說 canvas定義你在螢幕上畫的圖形,而paint定義顏色,樣...