android中的surfaceview控件

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

SurfaceView的使用方法:函数

1.当单独创建一个SurfaceView的工程布局

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

public class GameViewOK extends SurfaceView implements Callback, Runnablethis

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

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上添加其余控件。

相关文章
相关标签/搜索