SurfaceCreated是Android中的一个重要的回调函数,它在SurfaceView被创建的时候运行,通常用于完成一些初始化的操作。对于SurfaceView的用户界面开发来说,SurfaceCreated是必须掌握的知识。
SurfaceCreated的作用
SurfaceCreated是SurfaceView控件所绑定的Surface创建时的回调函数,它的主要功能是完成SurfaceView创建前的一些初始化任务。通常涉及到的任务有初始化画布、设置画笔对象、创建线程等。
除此之外,SurfaceCreated还可以用于处理 SurfaceView 界面被创建时的一些事件,例如设置是否强制在主线程中执行。
SurfaceCreated调用时机
在SurfaceView创建时,onCreate方法中可以调用setContentView方法,将在activity中定义的 SurfaceView控件加入到布局中。SurfaceView控件在布局中得到调用后,就会开始注册句柄并进行绘制。
当SurfaceView控件准备好绘制时,就会调用SurfaceCreated函数。
SurfaceCreated的使用技巧
SurfaceCreated的使用技巧在于控制SurfaceView的绘制,避免出现应用程序强制关闭的情况。
使用SurfaceCreated时需要注意以下几点:
1.在 SurfaceView 准备好绘制之前,必须将 SurfaceView 加入到布局中。
2.必须为 SurfaceView 提供绑定的 SurfaceHolder 对象,它是 Surface 对象的持有者。
3.在SurfaceCreated回调函数中,必须调用SurfaceHolder的lockCanvas()方法获取Surface上的Canvas对象,如果Canvas为null则需等待直到它不为空;在使用完Canvas对象后,必须释放该锁。
SurfaceCreated的实例应用
例如,我们需要在Activity中添加一个SurfaceView控件并对其进行初始化操作。一般的实现流程为:
1.继承SurfaceView,重写以下三个函数:
public void surfaceCreated(SurfaceHolder holder);
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height);
public void surfaceDestroyed(SurfaceHolder holder);
2.在onCreate方法中调用setContentView()方法将SurfaceView控件加入到布局中。
3.在SurfaceCreated()函数中进行Canvas初始化的一系列操作。
4.添加线程,完成同步与异步的绘制过程。
总之,SurfaceCreated对于SurfaceView用户界面开发是一个非常重要的回调函数,它可以帮助我们完成一些初始化的任务,同时也能有效的避免应用程序的强制关闭。针对SurfaceCreated的应用技巧,我们需要灵活的运用和掌握,才能更好的完成用户界面开发的任务。