/** * 一个简单的游戏框架 * 没有按键处理,声音播放 * @author 岳振华 * */ public class MySrufaceView extends SurfaceView implements Callback, Runnable { private SurfaceHolder sfh; private Thread thread; @SuppressWarnings("unused") private int surfaceW,surfaceH; private Paint paint; private Canvas canvas; public MySrufaceView(Context context) { super(context); sfh = this.getHolder();// 获得surfaceHolder对象 sfh.addCallback(this); thread=new Thread(this); paint=new Paint();//新建画笔 paint.setColor(Color.RED);//设置画笔颜色 paint.setAntiAlias(true);//? this.setKeepScreenOn(true);//保持屏幕常亮 } /** * 开始动画 */ @Override public void startAnimation(Animation animation) { super.startAnimation(animation); } /**************************** callback的几个方法 ********************/ /** * 当Surface第一次创建后会立即调用该函数 * 一般情况下都是在另外的线程来绘制界面,所以不要在这个函数中绘制Surface */ @Override public void surfaceCreated(SurfaceHolder holder) { surfaceW=this.getWidth(); surfaceH=this.getHeight(); thread.start();//开启线程 } /** * 当Surface的状态(大小和格式)发生变化的时候会调用 * 该函数 在surfaceCreated调用后该函数至少会被调用一次 */ @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } @Override public void surfaceDestroyed(SurfaceHolder holder) { } /**************************** callback的几个方法 ********************/ /** * 绘图方法 */ private void draw() { int i=0; try { //获得canvas实例 canvas=sfh.lockCanvas(); canvas.drawColor(Color.WHITE);//刷屏 canvas.drawText("岳振华"+i, 100, 100, paint);//画文本 i++; } catch (Exception e) { e.printStackTrace(); } finally { if(null!=canvas) { sfh.unlockCanvasAndPost(canvas);//提交画布 } } } @SuppressWarnings("static-access") @Override public void run() { //绘图 draw(); try { thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } }