SurfaceHolder

SurfaceHolder


这是一个接口;view是它的父类,我们通过它来操作surface


通过这个接口我们可以去控制视图画面的显示。允许你去surface的尺寸和格式,


编辑surface的像素,控制更改surface的内容;
我们通过surfaceview类来创建他的实例对象。使其可用。
前面分析过了,利用canvas来绘画时候,应该再callback.surfacecreated回调方


法中用线程去实现。画布的lock与unlock整体完成后,绘图才会显示出来。


类中的常量值(用来声明控制的surface的类型):
SURFACE_TYPE_GPU(2): 创建适用于GUP加速的surface
SURFACE_TYPE_HARDWARE(1): 创建适用于DMA和硬件加速的surface
SURFACE_TYPE_NORMAL(0): 创建适用于RAM缓存原生数据的普通surface
SURFACE_TYPE_PUSH_BUFFERS(3): 创建一个不包含原生数据的surface,其


surface的数据来源是其他的对象提供,此类型不能用lockCanvas来获取Canvas对


象,否则报错。*****感觉好像不好使,画图还是播放视频都不影响,android4.4


的;


方法:


public abstract void addCallback (SurfaceHolder.Callback callback) :给


holder添加回调函数


public abstract Surface getSurface ():得到一个surface;但有时候不能获


得,例如:当使用SurfaceView, Surface的持有者直到该View隶属于当前窗口管


理器,确认布局大小和屏幕的位置后才进行创建,你通常需要实现


Callback.surfaceCreated寻找出可用的Surface。


public abstract Rect  getSurfaceFrame () ://检索当前suface的大小


public abstract Canvas lockCanvas ()://返回一个可绘画的画布


public abstract Canvas lockCanvas (Rect dirty):指定一个脏区域,脏矩形


的内容一定被绘制


public abstract void removeCallback (SurfaceHolder.Callback callback) 


:在surfaceview中删除先前调用的回调接口


public abstract void setFixedSize (int width, int height):  使surface


固定大小,他将永远不能该表大小,当和SurfaceView一起工作时,这必须被同一


运行的SurfaceView的窗口线程来调用


public abstract void setFormat (int format):   设置surface所需的像素格


式。默认是不透明的,当和SurfaceView一起工作时,这必须被同一运行的


SurfaceView的窗口线程来调用 参数   format  PixelFormat的常量


public abstract void setKeepScreenOn (boolean screenOn)   当surface被显


示的时候是否启用或禁用屏幕保持打开状态,默认是禁用,允许屏幕关闭,启用


选项有效时,可以安全的调用任何线程


public abstract void setSizeFromLayout ()  : 允许suface基于容器的布局


来改变大小(这是默认的),当启用此功能,就应该监视surfaceChanged


(SurfaceHolder, int, int, int)应对suface的大小变化,当和SurfaceView一起


工作时,这必须被同一运行的SurfaceView的窗口线程来调用


public abstract void setType (int type) : 设置该surface的类型 参数  


type  该surface的内存类型




public abstract void unlockCanvasAndPost (Canvas canvas)   在surface完


成编辑像素,该函数调用后,surface的当前像素就会在屏幕上显示。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值