zoukankan      html  css  js  c++  java
  • Android开发笔记——SurfaceHolder.Callback

    一   前文概要说明

        首先得简单说明一下Surface与SurfaceHolder.Callback之间的联系。

        Surface是android的一个重要元素,用于android画面的图形绘制。而SurfaceView 是视图(View)的一个继承类,每一个SurfaceView都内嵌封装一个Surface。通过调用SurfaceHolder可以调用 SurfaceView,控制图形的尺寸和大小。而SurfaceHolder 是通过surfaceView.getholder()来取得。创立SurfaceHolder 对象后,用SurfaceHolder.Callback()来回调SurfaceHolder,对SurfaceView进行控制。

         单纯得用文字表述有点绕,因此下面将给出几段代码以供理解。

     

     SurfaceHolder holder = ((SurfaceView) findViewById(R.id.cameraPreview)).getHolder();

         

          holder.addCallback(this);

         

         holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

         

     

          这样就可以通过callback()对SurfaceView进行修改。

    二  callback()方法介绍

          callback()包括三个函数:

          ①surfaceCreatedSurfaceHolderholder

                    当Surface第一次创建后会立即调用该函数。程序可以在该函数中做些和绘制界面相关的初始化工作,一般情况下都是在另外的线程来绘制界面,所以不要在这个函数中绘制Surface。

                     参数

                     holder     surface所创建的SurfaceHolder

          ②surfaceChangedSurfaceHolder holder, int format, int width, int height

                    当Surface的状态(大小和格式)发生变化的时候会调用该函数,在surfaceCreated调用后该函数至少会被调用一次。

                    参数

                  holder       更新surface的SurfaceHolder

                  format       新的图形格式

                  width         新的宽度

                  height      新的高度

          ③surfaceDestroyed()

                   当Surface被摧毁前会调用该函数,该函数被调用后就不能继续使用Surface了,一般在该函数中来清理使用的资源。

                   参数

                    holder     所要被删除的surface的SurfaceHolder

  • 相关阅读:
    C语言遍历文件夹里所有文件【转】
    davinci有用的连接
    VC中关于release和debug的区别【转】
    fprintf、printf、sprintf、fscanf、scanf、sscanf 格式化输入输出【转】
    达芬奇数字媒体片上系统的架构和 Linux 启动过程【转】
    shell执行的特殊变数
    解决ubuntu10插入耳机还有外音的问题
    VMware Workstation安装ubuntu10.10【图解】
    使用 WebPlayer9播放器 使得my_vod_caching文件夹巨大系统空间急剧减少
    使用指针时的“陷阱”
  • 原文地址:https://www.cnblogs.com/90zyh/p/2802467.html
Copyright © 2011-2022 走看看