?在那本書用的是GameCanvas,我就用surfaceView實(shí)現(xiàn)了和實(shí)例2相同的效果
效果圖:
下面給出MainView 的代碼
package com.wjh.demon_3; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.view.KeyEvent; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.SurfaceHolder.Callback; public class MainView extends SurfaceView implements Callback,Runnable{ int keyCode = 0; String keyAction = ""; Thread gameThread = null; boolean isGame = true; SurfaceHolder holder = null; public MainView(Context context) { super(context); // TODO Auto-generated constructor stub setFocusable(true); getHolder().addCallback(this); holder = this.getHolder(); } @Override public void run() { // TODO Auto-generated method stub while(isGame) { input(); logic(); doDraw(); try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //開始游戲主線程 public void start() { if(gameThread == null) { gameThread = new Thread(this); gameThread.start(); } } //停止游戲主線程 public void stop() { isGame = false; if(gameThread != null) { try { gameThread.join(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //輸入判斷 public void input() { } //邏輯判斷 public void logic() { } public void doDraw() { Canvas c = null; try { c = holder.lockCanvas(); synchronized (holder) { paint(c); } }finally{ if(c != null) { holder.unlockCanvasAndPost(c); } } } //畫圖 public void paint(Canvas canvas) { Paint backGround = new Paint(); backGround.setColor(Color.BLACK); //清屏 canvas.drawRect(0, 0, getWidth(), getHeight(), backGround); //設(shè)置畫筆顏色 Paint cPaint = new Paint(); cPaint.setColor(Color.BLUE); cPaint.setTextSize(20); //輸出按鍵的設(shè)備碼 canvas.drawText("KeyCode:", 10, 20,cPaint); canvas.drawText(""+keyCode,120,20,cPaint); //輸出按鍵的設(shè)備名 canvas.drawText("KeyAction:", 10, 80, cPaint); canvas.drawText(keyAction, 120, 80, cPaint); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // TODO Auto-generated method stub } @Override public void surfaceCreated(SurfaceHolder holder) { // TODO Auto-generated method stub start(); } @Override public void surfaceDestroyed(SurfaceHolder holder) { // TODO Auto-generated method stub stop(); } public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub this.keyCode = keyCode; switch(keyCode) { case KeyEvent.KEYCODE_DPAD_UP: this.keyAction = "UP"; break; case KeyEvent.KEYCODE_DPAD_DOWN: this.keyAction = "DOWN"; break; case KeyEvent.KEYCODE_DPAD_LEFT: this.keyAction = "LEFT"; break; case KeyEvent.KEYCODE_DPAD_RIGHT: this.keyAction = "RIGHT"; break; case KeyEvent.KEYCODE_DPAD_CENTER: this.keyAction = "CENTER"; break; default: this.keyAction="NONE"; break; } return super.onKeyDown(keyCode, event); } }
apk包(將后綴改為apk): Demon_3.zip
?源文件包: Demon_3.rar
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
