用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文件直接不用管。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。