您的位置:首页 > 移动开发 > Android开发

android-关于bitmap和canvas的一些注意的细节

2012-05-11 10:18 519 查看
在创建新的控件或修改现有的控件时,我们都会涉及到重写控件或View的onDraw方法。

onDraw方法会传入一个Canvas对象,它是你用来绘制控件视觉界面的画布。

在onDraw方法里,我们经常会看到调用save和restore方法,它们到底是干什么用的呢?

❑ save:用来保存Canvas的状态。save之后,可以调用Canvas的平移、放缩、旋转、错切、裁剪等操作。

❑ restore:用来恢复Canvas之前保存的状态。防止save后对Canvas执行的操作对后续的绘制有影响。
save和restore要配对使用(restore可以比save少,但不能多),如果restore调用次数比save多,会引发Error。常用作做游戏时场景画布的移动撤销

// 防止出现Immutable bitmap passed to Canvas constructor错误

Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(),

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: