一.Canvas簡介
Canvas我們可以稱之為畫布,能夠在上面繪制各種東西,是安卓平台2D圖形繪制的基礎,非常強大。
一般來說,比較基礎的東西有兩大特點:
- 可操作性強:由于這些是構成上層的基礎,是以可操作性必然十分強大。
- 比較難用:各種方法太過基礎,想要完美的将這些操作組合起來有一定難度。
不過不必擔心,本系列文章不僅會介紹到Canvas的操作方法,還會簡單介紹一些設計思路和技巧。
二.Canvas的常用操作速查表

三.Canvas
3.1 繪制顔色
繪制顔色是填充整個畫布,常用于繪制底色。
3.2 建立畫筆
要想繪制内容,首先需要先建立一個畫筆:
// 1.建立一個畫筆
private Paint mPaint = new Paint();
// 2.初始化畫筆
private void initPaint() {
mPaint.setColor(Color.BLACK); //設定畫筆顔色
mPaint.setStyle(Paint.Style.FILL); //設定畫筆模式為填充
mPaint.setStrokeWidth(f); //設定畫筆寬度為10px
}
// 3.在構造函數中初始化
public SloopView(Context context, AttributeSet attrs) {
super(context, attrs);
initPaint();
}
3.3繪制點:
可以繪制一個點,也可以繪制一組點,如下:
canvas.drawPoint(, , mPaint); //在坐标(200,200)位置繪制一個點
canvas.drawPoints(new float[]{ //繪制一組點,坐标位置由float數組指定
,,
,,
,
},mPaint);
關于坐标原點預設在左上角,水準向右為x軸增大方向,豎直向下為y軸增大方向。
3.4 繪制直線:
canvas.drawLine(,,,,mPaint); // 在坐标(300,300)(500,600)之間繪制一條直線
canvas.drawLines(new float[]{// 繪制一組線 每四數字(兩個點的坐标)确定一條線
,,,,
,,,
},mPaint);
3.5 繪制矩形:
确定确定一個矩形最少需要四個資料,就是對角線的兩個點的坐标值,這裡一般采用左上角和右下角的兩個點的坐标。
關于繪制矩形,Canvas提供了三種重載方法,第一種就是提供四個數值(矩形左上角和右下角兩個點的坐标)來确定一個矩形進行繪制。 其餘兩種是先将矩形封裝為Rect或RectF(實際上仍然是用兩個坐标點來确定的矩形),然後傳遞給Canvas繪制,如下:
// 第一種
canvas.drawRect(,,,,mPaint);
// 第二種
Rect rect = new Rect(,,,);
canvas.drawRect(rect,mPaint);
// 第三種
RectF rectF = new RectF(,,,);
canvas.drawRect(rectF,mPaint);
兩者最大的差別就是精度不同,Rect是int(整形)的,而RectF是float(單精度浮點型)的。
3.6 繪制圓角矩形:
繪制圓角矩形也提供了兩種重載方式,如下:
// 第一種
RectF rectF = new RectF(,,,);
canvas.drawRoundRect(rectF,,,mPaint);
// 第二種
canvas.drawRoundRect(,,,,,,mPaint);
上面兩種方法繪制效果也是一樣的,但鑒于第二種方法在API21的時候才添加上,是以我們一般使用的都是第一種。