canvas.save()与canvas.restore()
2016-02-17 14:58
337 查看
@Override public void draw(Canvas canvas) { super.draw(canvas); /*********************************************************** * canvas.save();和canvas.restore();是成对出现的,作用是用来保存画布的状态和取出保存的状态。 * 当我们对画布进行旋转,缩放,平移等操作的时候,其实我们是想对特定的元素(比如图片,一个矩形)进行操作,但是, * 当你用canvas的方法来进行这些操作的时候,其实是对整个画布进行了操作,那么之后在画布上的元素都会受到影响, * 所以我们在操作之前调用canvas.save()来保存画布当前的状态,操作完后取出之前保存过的状态,这样就不会对其他的元素造成影响 */ canvas.save(); canvas.translate(200, 200); canvas.rotate(degrees, 0, 0); canvas.drawRect(0, 0, 100, 100, p); degrees ++; canvas.restore(); canvas.save(); canvas.translate(300, 300); canvas.rotate(degrees, 100, 100); canvas.drawRect(0, 0, 100, 100, p); degrees ++; canvas.restore(); /********************************************************* * 请求重绘View树,只绘制需要重绘的视图,即谁请求invalidate()方法,就绘制谁 * 如果是View请求invalidate()方法,则只绘制该View; * 如果是ViewGroup请求invalidate()方法,则绘制整个ViewGroup */ invalidate(); }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories