您的位置:首页 > 其它

安卓飞机大战(二) SurfaceView实现自制背景

2015-08-16 17:50 309 查看
用SurfaceView写一个自制的背景图,并且可以移动,加上安卓飞机大战(一)中的BackgroundManager类,可以直接使用

GameView代码:

public class GameView extends SurfaceView implements SurfaceHolder.Callback,Runnable{
private SurfaceHolder hd=null;
private Canvas canvas=null;
private BackgroundManager backgroundmanager;

public GameView(Context context) {
super(context);
this.setFocusable(true);
hd=this.getHolder();
hd.addCallback(this);
}

public void run() {
while(isrunning){
mydraw();
try {
Thread.sleep(100);//每100s刷新一次屏幕
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}
public void mydraw(){
try{
if(hd!=null){
canvas=hd.lockCanvas();
canvas.drawColor(Color.BLUE);
backgroundmanager.drawbackground(canvas);
}catch(Exception e){
e.printStackTrace();
}finally{
if(canvas!=null)
hd.unlockCanvasAndPost(canvas);
}
}
public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub

}

public void surfaceCreated(SurfaceHolder arg0) {
thread=new Thread(this);//定义一个新线程
thread.start();
backgroundmanager=new BackgroundManager(this);
}

@Override
public void surfaceDestroyed(SurfaceHolder arg0) {
}

MainActivity 代码:

public class MainActivity extends Activity {

private GameView gameview=null;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
gameview=new GameView(this);
setContentView(gameview);
}

这样就能实现背景的循环移动了,layout中的xml文件直接不用管。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SurfaceView layout