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
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
相关文章推荐
- Android 创建文件夹,文件的一些注意细节
- 关于Android应用开发的一些安全注意事项
- android编程过程中遇到的关于Canvas: trying to use a recycled bitmap android.graphics.Bitmap问题的原因及解决办法
- 一些细节,需要注意;一些小错,难以察觉(Android SharedPreferences、Thread、Toast、AsyncTask)
- Android开发的一些需要注意的细节
- Android中一些常用类的常用方法(Math、Random、Color、Paint、Canvas、Bitmap、BitmapFactory)
- android笔记2——关于图片缓存的一些注意事项
- 关于Canvas: trying to use a recycled bitmap android.graphics的疑惑
- Android小知识——关于Android内存、性能优化的一些细节
- 关于Android应用开发的一些安全注意事项
- 关于android中bitmap使用时的oom的一些解决方法
- 关于dom4j中的一些注意细节,Element和Node的区别
- 关于Android内存管理及性能优化的一些细节
- Android开发的一些需要注意的细节
- 关于Android应用开发的一些安全注意事项
- 关于Android PopupWindow 使用要注意的一些地方
- 关于Android的一些基础注意事项
- Android 关于Fragment一些简单注意事项
- 关于dom4j中的一些注意细节,Element和Node的区别
- 关于在ubuntu中修改Android源码的一些细节