Canvas & Drawables
欢马劈雪 最近更新时间:2020-08-04 05:37:59
- 绘制4个基本元素
- Bitmap:保存每个像素的数据
- Canvas:提供draw*** API,通过draw系列函数(绘制线、矩形、圆、椭圆等),把绘制结果写入到bitmap对象中
- Drawing primitive:Rect, Path, text, Bitmap...
- Paint:画笔,描述绘制内容的属性(颜色、样式)
- 两种用法
- 绘制到View,只需要在View子类的onDraw方法中绘制即可,onDraw函数会传入一个Canvas对象,使用其进行绘制即可,由framework负责绘制流程;适用于静态自定义图形、简单动态图形;
- 绘制到Canvas,绘制原语一样,但是最后需要显示的时候,要通过View/Surface来进行显示;适合复杂的动态图形绘制,例如视频游戏;
- 绘制到View
- 适用于静态、低帧率、简单动态图形的绘制,重写View的onDraw方法即可
- 使用参数传入的Canvas对象,由framework负责调用onDraw函数
- 通过invalidate函数请求重绘
- onDraw、invalidate都需要在主线程执行,其他线程可以通过postInvalidate请求重绘
-
- 绘制到Canvas
- Canvas记录(执行)draw操作,将操作记录到Bitmap上,最后将Bitmap显示在Surface上
- 绘制到SurfaceView
- SurfaceView是View的子类,支持他线程绘制,主线程不同步等待其绘制,不需要保证60 fps
- Drawable
Drawable Resources