android之Canvas淺談常用幾個方法

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)指定圖層出棧,與保存之前的圖案合併


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章