1、通俗說canvas是一塊畫布,我們所有的繪製操作都在其上進行,但實質上canvas只是bitmap的容器,真正的繪製的內容是在bitmap上顯示,但我們自定義view的時候再onDraw()中繪製不用關注,因爲ondraw()給我們的canvas是初始化過的,如果要自己創建則需要 Canvas mCanvas -= new Canvas(bitmap);
即有兩種方式獲取 Canvas
第一、api給我們提供 ondraw(canvas)
第二、自己創建,一般在自定義surfaceview或者移動實時更新View的時候 Canvas mCanvas -= new Canvas(bitmap);在這個bitmap上繪製完數據之後,我們要顯示到手機屏幕上,這時要surfaceview要獲取屏幕緩存的canvas,將bitmap數據繪製更新,對於自定義的view來說要在ondraw(canvas)中的拿到canvas.drawbitmap將準備好的bitmap繪製更新到屏幕上
2、介紹常用的canvas方法
drawColor();設置畫布的背景
drawXXX();繪製各種圖案
translate();平移畫布到指定的座標
rotate();//指定角度旋轉畫布
save();保存畫布,作用就是講之前繪製的所有的圖案保存,讓後續的操作像是在一個新的圖層上操作一樣,不會影響到之前已經繪製的圖案
save() : 用來保存Canvas的狀態,save()方法之後的代碼,可以調用Canvas的平移、放縮、旋轉、裁剪等操作!
restore();作用是合併圖層,即將save()之前和save()之後的圖案進行合併,一般save()和restore()一起使用
5.0系統新增的api
saveLayer() ;// 作用跟save一樣,但是很明確就是保存新的圖層將這個圖層入棧,然後續的操作都在這個圖層上進行
saveLayerAlpha():// 作用跟save一樣,但是很明確就是保存新的圖層將這個圖層入棧,然後續的操作都在這個圖層上進行,可以設置這個新圖層的背景透明度
同樣也是通過restore()合併圖案 ,還可以使用restoreToCount(saveCount)指定圖層出棧,與保存之前的圖案合併