android-關於bitmap和canvas的一些注意的細節


在創建新的控件或修改現有的控件時,我們都會涉及到重寫控件或View的onDraw方法。

onDraw方法會傳入一個Canvas對象,它是你用來繪製控件視覺界面的畫布。

在onDraw方法裏,我們經常會看到調用save和restore方法,它們到底是幹什麼用的呢?

❑ save:用來保存Canvas的狀態。save之後,可以調用Canvas的平移、放縮、旋轉、錯切、裁剪等操作。

❑ restore:用來恢復Canvas之前保存的狀態。防止save後對Canvas執行的操作對後續的繪製有影響。

save和restore要配對使用(restore可以比save少,但不能多),如果restore調用次數比save多,會引發Error。常用作做遊戲時場景畫布的移動撤銷


  1.  // 防止出現Immutable bitmap passed to Canvas constructor錯誤  
  2.         Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(),  
  3.                 R.drawable.apple).copy(Bitmap.Config.ARGB_8888, true);  

BitmapFactory.decodeResource(getResources(), R.drawable.xiao).copy(Bitmap.Config.ARGB_8888, true);

注意:上面防止出現Immutable bitmap passed to Canvas constructor錯誤

原因是如果不用copy的方法,直接引用會對資源文件進行修改,而android是不允許在代碼裏修改res文件裏的圖片


轉自:http://blog.csdn.net/gh102/article/details/6719624

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