标签:
SurfaceView是继承于View类的,有绘制动态图片,播放视频的作用。View负责在主线程中更新动画,而在SurfaceView是在一个新线程中更新动画,并且它是一个2D的画布效果,将自己放置于屏幕的最低层进行图画的显示,
SurfaceView的使用方法:
1.当单独建立一个SurfaceView的工程
需要将这个工程继承SurfaceView 并接口于SurfaceHolder的Callback和Runnable 其中SurfaceHolder是用来监听画布,Runnable则是用来开启一个新进程,在进程中进行画面的绘制。
public class GameViewOK extends SurfaceView implements Callback, Runnable
完成继承和接口后,会有三个构造函数和一个重载函数,分别为:surfaceCreated,surfaceChanged,surfaceDestroyed以及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上添加其他控件。
标签:
原文地址:http://my.oschina.net/u/2408219/blog/476541