自定義View之Canvas使用

2021-09-11 17:32:26 字數 2818 閱讀 3459

自定義view的繪製流程一般都是這樣:提前建立好paint物件,重寫ondraw(),把繪製**解除安裝ondraw()裡面,大致如下:

paint paint = new paint();

@override

protected

void

ondraw

(canvas canvas)

複製**

這裡主要是學會paint的幾個基礎api和canvas能繪製的一些圖形:

canvas類下的所有draw-打頭的方法,例如drawcircle()drawbitmap()

paint的幾個常用api:paint.setstyle(style style)設定繪製模式paint.setcolor(int color)設定顏色paint.setstrokewidth(float width)設定線條寬度paint.settextsize(float textsize)設定文字大小paint.setantialias(boolean aa)設定抗鋸齒開關

下面主要看canvas繪製的api。

在整個繪製區域統一塗上指定的顏色。例如drawcolor(color.black)會把整個區域染成純黑色,覆蓋掉原有內容;drawcolor(color.parse("#88880000")會在原有的繪製效果上加一層半透明的紅色遮罩。

這類顏色填充方法一般用於在繪製之前設定底色,或者在繪製之後為介面設定半透明蒙版。

畫圓。前兩個引數centerx在android裡,每個view都有各自的座標系,互不影響,座標系的原點為view左上角的那個點。水平方向為x軸,向右為正,豎直方向為軸,向下為負。

畫矩形。

畫點。xy是點的座標。點的大小可以通過paint.setstrokewidth(width)來設定;點的形狀可以通過paint.setstrokecap(cap)來設定:round畫出來是圓形的點,squarebutt畫出來是方形的點。

注:paint.setstrokecap(cap)可以設定點的形狀,但這個方法並不是專門用來設定點的形狀的,而是乙個設定線條端點形狀的方法。端點有圓頭 (round)、平頭 (butt) 和方頭 (square) 三種

畫點(批量)。同樣是畫點,它和drawpoint()的區別是可以畫多個點。pts這個陣列是點的座標,每兩個成一對;offset表示跳過陣列的前幾個數再開始記座標;count表示一共要繪製幾個點。

畫橢圓。只能繪製橫著的或者豎著的橢圓,不能繪製斜的,left,top,right,bottom是這個橢圓的左、上、右、下四個邊界點的座標。

畫線。startx,starty,stopx,stopy分別是線的起點和終點座標。由於直線不是封閉圖形,所以setstyle(style)對直線沒有影響。

畫線(批量)。

畫圓角矩形。left,top,right,bottom是左上角和右下角的座標,rxry是圓角的橫向半徑和縱向半徑。

繪製弧形和扇形。drawarc()是使用乙個橢圓來描述弧形的。left,top,right,bottom描述的是這個弧形所在的橢圓;startangle是弧形的起始角度(x 軸的正向,即正右的方向,是 0 度的位置;順時針為正角度,逆時針為負角度),sweepangle是弧形劃過的角度;usecenter表示是否連線到圓心,如果不連線到圓心,就是弧形,如果連線到圓心,就是扇形。

畫自定義圖形。

path可以描述直線、二次曲線、三次曲線、圓、橢圓、弧形、矩形、圓角矩形。把這些圖形結合起來,就可以描述出很多複雜的圖形。

path有兩類方法,一類是直接描述路徑的,另一類是輔助的設定或計算。

path 方法第一類:直接描述路徑。這一類方法還可以細分為兩組:新增子圖形和畫線(直線或曲線)

第一組add***()——新增子圖形

第二組***to()——畫線(直線或曲線)

path 方法第二類:輔助的設定或計算

這類方法的使用場景比較少,如:setfilltype(filltype filltype)設定填充方式。

繪製bitmap物件,也就是把這個bitmap中的畫素內容貼過來。

繪製文字。

自定義view之自定義屬性

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

Android自定義控制項之自定義View 二

效果如下圖 1 自定義ringview繼承view新增其構造方法並建立畫筆 public class ringview extends view protected boolean isrunning false public ringview context context public ring...

自定義View之Switch

思路 定義類繼承view,重寫幾個用到的方法 1.三個構造方法 2.onmeasure測量 onlayout布局 ondrow繪圖 3.ontouchevent觸控事件方法 invalidate 可以高頻度的呼叫ondraw 定義乙個外部介面,將開關狀態傳出去 新增設定介面物件的方法,外部進行呼叫 ...