SurfaceHolder.Callback

来源:互联网 发布:ubuntu命令行复制文件 编辑:程序博客网 时间:2024/05/16 06:11

SurfaceHolder.Callback

(2012-03-09 09:15:44)
转载
标签:

杂谈

分类:android

一  前文概要说明

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

   Surface是android的一个重要元素,用于android画面的图形绘制。而SurfaceView是视图(View)的一个继承类,每一个SurfaceView都内嵌封装一个Surface。通过调用SurfaceHolder可以调用SurfaceView,控制图形的尺寸和大小。而SurfaceHolder是通过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

      ②surfaceChangedSurfaceHolderholder, int format, int width, int height

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

               参数

              holder     更新surface的SurfaceHolder

              format     新的图形格式

              width       新的宽度

              height     新的高度

      ③surfaceDestroyed()

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

              参数

               holder     所要被删除的surface的SurfaceHolder

0 0