1、Canvas
Canvas類主要實現了螢幕的繪製過程,其中包含了很多實用的方法,比如繪製一條路徑、區域、貼圖、畫點、畫線、渲染文字,
當然Android官網提示大家很多方法有不同的過載版本,引數更靈活。
2D部分是android SDK內部自己提供,3D部分是用Open GL ES(3D部分先直接pass,除非你要做些3D遊戲之類的)。大部分2D使用的api都在android.graphics和android.graphics.drawable包中。
API參考地址http://android.toolib.net/reference/android/graphics/Canvas.html
下面是Canvas類常用的簡單方法
// 設定畫布顏色為藍色
canvas.drawColor(Color.BLUE);
//canvas.drawPoint(x, y, paint); x、y表示繪製點的座標
//canvas.drawPoints(pts, paint);pts表示繪製點儲存的陣列,兩兩值表示一個座標點
//canvas.drawPoints(pts, offset, count, paint);offset表示跳過哪些點,count表示實際繪製的個數
float[] pts= {10,10,120,120,230,230,40,40,90,90};
canvas.drawPoints(pts, paint);
繪製散點圖:
canvas.drawPoints(pts,3,4, paint);
跳過pts前3值後開始算4個值的資料(120,230,230,40)
即繪製(120,230)、(230,40)兩個點
繪製幾何圖形:
public GeometryView(Context context) {
super(context);
mPaint = new Paint();
// 設定抗鋸齒
mPaint.setFlags(Paint.ANTI_ALIAS_FLAG);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//設定畫布顏色 也就是背景顏色
canvas.drawColor(Color.WHITE);
mPaint.setColor(Color.BLACK);
canvas.drawText("繪製無規則幾何圖形", 150, 30, mPaint);
//繪製一條線
mPaint.setColor(Color.BLACK);
mPaint.setStrokeWidth(4);
canvas.drawLine(0, 0, 100, 100, mPaint);
//繪製一個矩形
mPaint.setColor(Color.YELLOW);
canvas.drawRect(0, 120, 100, 200, mPaint);
//繪製一個圓形
mPaint.setColor(Color.BLUE);
canvas.drawCircle(80, 300, 50, mPaint);
//繪製一個橢圓
mPaint.setColor(Color.CYAN);
canvas.drawOval(new RectF(300,370,120,100), mPaint);
//繪製多邊形
mPaint.setColor(Color.BLACK);
Path path = new Path();
path.moveTo(150+5 , 400 -50);
path.lineTo(150+45, 400 - 50);
path.lineTo(150+30, 460 - 50);
path.lineTo(150+20, 460 - 50);
path.close();
canvas.drawPath(path, mPaint);
}
此外還有好多繪製各種簡單圖形的方法,偷懶就不一一寫了,需要的時候可以去查api文件,
或者在eclipse 敲canvas.draw 按 ALT+/ 提示
總的來說,Canvas可以繪製的物件有:弧線(arcs)、填充顏色(argb和color)、Bitmap、圓(circle和oval)、點(point)、線(line)、矩形(Rect)、圖片(Picture)、圓角矩形(RoundRect)、文字(text)、頂點(Vertices)、路徑(path)。通過組合這些物件我們可以畫出一些簡單有趣的介面出來,但是光有這些功能還是不夠的,如果我要畫一個儀表盤(數字圍繞顯示在一個圓圈中)就比較困難(不要告訴我直接貼一張儀表盤的圖片上去,如果要讓儀表盤指標會動呢?就沒轍了吧!)。
幸好Android還提供了一些對Canvas位置轉換的方法:rorate、scale、translate、skew(扭曲)等,而且它允許你通過獲得它的轉換矩陣物件(getMatrix方法)直接操作它。這些操作就像是雖然你的筆還是原來的地方畫,但是畫紙旋轉或者移動了,所以你畫的東西的方位就產生變化。為了方便一些轉換操作,Canvas還提供了儲存和回滾屬性的方法(save和restore類似資料庫commit和rollback),比如你可以先儲存目前畫紙的位置(save),然後旋轉90度,向下移動100畫素後畫一些圖形,畫完後呼叫restore方法返回到剛才儲存的位置,這些內容將在BitMap的操作中講到。