任务知识总结之绘制相关

来源:互联网 发布:来自星星的你知我是 编辑:程序博客网 时间:2024/06/07 00:38

在android系统中 canvas主要用于处理显示内容的绘制,自定义View时我们一般都是在View的onDraw中接收到系统传给我们的canvas,然后将我们需要展示的内容绘制到该canvas上,最后系统会渲染该canvas上的内容到屏幕上。那么
canvas是什么:canvas其实是用于绘制的工具,不完全是一个画布,当我们给canvas设置画布的时候(比如bitmap),该bitmap就是一个画布,而canvas主要负责画板相关的工作(该画板是没有大小限制的,可以理解为透明的无限的平面),canvas默认坐标原点为左上角(0,0)。
canvas能做什么:canvas能帮我们拿到我们想要的内容,通过canvas可以将内容绘制到我们指定的画布上
canvas怎么做:
canvas提供很多绘制api,例如drawLine,drawPath等,也提供了一些操作画板的相关功能,如下:
translate:平移canvas,这实际上是一个平移坐标的操作,当我们调用该api时,实际上是移动了canvas上原点,该操作只会影响之后的绘制,之前我们绘制的内容不会被影响,
scale:缩放canvas,由于画板是无线大小的透明的平面,所以实际上并不会被缩放,真正被缩放的是坐标。

save,restore,saveLayer,restoreToCount
这个api是新建画板和合并画板的,其实感觉理解为层会更加合适,
save 和saveLayer用于在原来的画板上再新建一个透明的画板,之后的操作都是在新的画板上绘制,绘制的区域会覆盖下面的层当中的内容,saveLayer中可以指定保存新建层中的相关数据项,全部保存时比较好内存;
restore和restoreToCount用于合并层,这个操作会很耗时

View中onKeyDown事件未响应====》当前View没有获得焦点
Bitmap:5.0之前—–BitmapFactory加载图片是native层去加载,Bitmap.createBitmap是在堆里面去加载。
Paint中PorterDuffXfermode的16中模式实际上并不是和官网效果图匹配的,详情可以看这个

原创粉丝点击