自定義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軸,向右為正,豎直方向為軸,向下為負。
畫矩形。
畫點。x
和y
是點的座標。點的大小可以通過paint.setstrokewidth(width)
來設定;點的形狀可以通過paint.setstrokecap(cap)
來設定:round
畫出來是圓形的點,square
或butt
畫出來是方形的點。
注:paint.setstrokecap(cap)
可以設定點的形狀,但這個方法並不是專門用來設定點的形狀的,而是乙個設定線條端點形狀的方法。端點有圓頭 (round
)、平頭 (butt
) 和方頭 (square
) 三種
畫點(批量)。同樣是畫點,它和drawpoint()
的區別是可以畫多個點。pts
這個陣列是點的座標,每兩個成一對;offset
表示跳過陣列的前幾個數再開始記座標;count
表示一共要繪製幾個點。
畫橢圓。只能繪製橫著的或者豎著的橢圓,不能繪製斜的,left
,top
,right
,bottom
是這個橢圓的左、上、右、下四個邊界點的座標。
畫線。startx
,starty
,stopx
,stopy
分別是線的起點和終點座標。由於直線不是封閉圖形,所以setstyle(style)
對直線沒有影響。
畫線(批量)。
畫圓角矩形。left
,top
,right
,bottom
是左上角和右下角的座標,rx
和ry
是圓角的橫向半徑和縱向半徑。
繪製弧形和扇形。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 定義乙個外部介面,將開關狀態傳出去 新增設定介面物件的方法,外部進行呼叫 ...