SurfaceHolder.Callback

转自http://hi.baidu.com/linnkan/blog/item/4997a2ec78d4a12726979106.html


前言本文内容是我学习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();

/*通过findViewById()方法,我们可以取得一个cameraPreview的SurfaceView,然后再通过getHolder(),取得这个SurfaceView的SurfaceHolder。*/

holder.addCallback(this);

/*用addcallback()来回调SurfaceView。因为该Acivity继承了SurfaceHolder.callback接口,重写了callback的三个函数,所以要用addcallback将这三个函数与Surface关联起来*/


holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

/*补充知识点:SURFACE_TYPE_PUSH_BUFFERS说明该Surface不包涵原生数据,Surface用到的数据由其他对象准备*/


这样就可以通过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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值