android中的surfaceview控件

SurfaceView是继承于View类的,有绘制动态图片,播放视频的作用。View负责在主线程中更新动画,而在SurfaceView是在一个新线程中更新动画,并且它是一个2D的画布效果,将自己放置于屏幕的最低层进行图画的显示,

SurfaceView的使用方法:

1.当单独建立一个SurfaceView的工程

需要将这个工程继承SurfaceView 并接口于SurfaceHolderCallbackRunnable  其中SurfaceHolder是用来监听画布,Runnable则是用来开启一个新进程,在进程中进行画面的绘制。

public class GameViewOK extends SurfaceView implements Callback, Runnable

完成继承和接口后,会有三个构造函数和一个重载函数,分别为:surfaceCreatedsurfaceChangedsurfaceDestroyed以及GameViewOK(例子),其中三个构造函数分别表示SurfaceView在创建,改变和毁坏时要做的相关处理,一般图形的绘制放在surfaceChanged中进行。在重载函数中使用代码

surfaceHolder = this.getHolder();

surfaceHolder.addCallback(this);//注册回调方法

来设置SurfaceHoler并添加回调方法,不添加这个回调会报空指针异常,SurfaceHolder相当于遥控器来控制SurfaceView

SurfaceView主要用来绘制图片,通过线程来实现画面的动画效果,在绘制图画的过程中,需要三个步骤:

(1)获取画布并锁定画布

Canves = SurfaceHolder.lockCanvas()

(2)然后在画布中进行绘画的操作

(3)绘制完毕后,使用SurfaceHolder.unlockCanvas方法来解锁画布,以供后续的操作。

2.mianActivity中添加surfaceview

同样是先建立一个JAVA类继承surfaceview并接口于surfaceHolder.Callback,Runnable。然后在mainActivity中创建类对象,在setContext中添加此类。例如: gameViewOK = new GameViewOK(this);

  setContentView(gameViewOK);

 

3.surfaceView上添加控件

当需要在SurfaceView上添加控件时,只需将继承于SurfaceView的类以控件的形式添加到布局文件即可。

<ControlTool.surfaceView

    android:layout_width="fill_parent"

 android:layout_height="fill_parent"/>

这样就可以在surfaceview上添加其他控件。

你可能感兴趣的:(android中的surfaceview控件)