• SurfaceView 及相关概念



    =============================================================
    SurfaceView
    =============================================================

    -------------------------------------------------------------
    1 相关类
    -------------------------------------------------------------


    1.1 surface

    1.1.1 意思:表面

    1.1.2 可以理解为底层数据缓冲器,和硬件显卡绘制的入口句柄

    1.1.3 Surface就是一个用来画图形(graphics)或图像(image)的地方

    1.1.4 Surface中有一个Canvas成员,专门用于画图的。

    1.2 surfaceView

    1.2.1 extends View

    1.2.1.1 拥有View的基本属性

    1.2.2 surfaceView是在一个新起的单独线程
    中可以重新绘制画面而View必须在UI
    的主线程中更新画面。

    1.2.2.1 意味着不需要等待主线程把所有View的绘制做完,
    处理完输入输出,Hnadler.looper等事件,直接下
    一帧绘制。

    1.2.3 SurfaceView 可以在线程中直接操作

    1.2.4 必然SurfaceView拥有Surface也就拥用Canvas

    1.2.5 通过Canvas对象来进行各种绘制:图形,图片,颜色,字符窜等

    1.2.6 SurfaceView拥的Canvas对象的特点

    1.2.6.1 不普通View中的Canvas相同,工作在独立线程。

    1.2.6.2 独占性:不能多个实例同时使用

    1.2.6.3 有效时间:间于在SurfaceHolder.Callback.surfaceCreated()和 SurfaceHolder.Callback.surfaceDestroyed()这两个方法之间

    1.2.6.4 在布局中使用SurfaceView,加载完成后,直接调用Canvas会是null

    1.3 SurfaceHolder

    1.3.1

    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
    }

    1.3.2 @Override
    public void surfaceCreated(SurfaceHolder holder) {
    }

    1.3.3 @Override
    public void surfaceCreated(SurfaceHolder holder) {
    }

    1.4 Canvas

    1.4.1 获取

    1.4.1.1 Canvas canvas = mSurfaceHolder.lockCanvas();

    1.4.2 提交

    1.4.2.1 mSurfaceHolder.unlockCanvasAndPost(canvas);

    1.4.3 画布功能

    1.4.3.1 drawColor()

    1.4.3.2 drawBitmap


    -------------------------------------------------------------
    2 使用
    -------------------------------------------------------------


    2.1 自定义View继承SurfaceView

    2.2 实现SurfaceHolder.Callback接口

    2.2.1 目的:掌握SurfaceView的生命周期

    2.2.2 在SurfaceHolder.Callback.surfaceCreated()和 SurfaceHolder.Callback.surfaceDestroyed()这
    两个方法之间进行工作

    2.3 获取Canvas对象

    2.3.1 lockCanvas()

    2.3.2 SurfaceHolder.lockCanvas()

    2.3.2.1 建议在SurfaceHolder.Callback.surfaceCreated()
    之后调用,确保返回有效对象。

    2.3.3 SurfaceView.lockCanvas()

    2.4 开启线程操作Canvas刷新


    -------------------------------------------------------------
    3 GLSurfaceView
    -------------------------------------------------------------


    3.1 SurfaceView的子类,具有SurfaceView的所有特性

    3.2 结合GLSurfaceView.Renderer来封装使用

    3.3 提供openGL与surfaceView整合方案


    -------------------------------------------------------------
    4 TextureView
    -------------------------------------------------------------

    -------------------------------------------------------------
    5 SurfaceTexture
    -------------------------------------------------------------

  • 相关阅读:
    AtCoder Regular Contest 077
    FWT模板
    hackerrank Alex对战Fedor
    hackerrank 训练军队
    hackerrank Diameter Minimization
    hackerrank Ticket
    java基础 布局管理器
    java基础 super 子类调用父类
    java基础 字符串 “==” 和 “equals” 比较
    java基础 作业(一)
  • 原文地址:https://www.cnblogs.com/mamamia/p/7742791.html
Copyright © 2020-2023  润新知