集册 Android&Java 技术笔记 Canvas & Drawables

Canvas & Drawables

欢马劈雪     最近更新时间:2020-08-04 05:37:59

220
  • 绘制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
    • 2D图形的高度抽象,有一系列的子类

Drawable Resources

展开阅读全文