SurfaceView 报空指针错误处理

package com.ganstyle.activity;


import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.util.Log;
import android.view.KeyEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;


public class GameView  extends SurfaceView implements Callback,Runnable{


private Paint paint;
private SurfaceHolder  sh;
private  Canvas canvas ;
private boolean isRunning = true;
public GameView(Context context) {
super(context);
sh =this.getHolder();  //surface遥控器
        sh.addCallback(this);
    
        
}
private int x;
private void drawView(
{  //当按返回键报错时,第一种处理方法, 去掉 if 和finally 执行代码,报空指针
if(sh != null) try{
canvas = sh.lockCanvas();
paint= new Paint();
paint.setColor(Color.RED);
paint.setStyle(Style.STROKE);
canvas.drawCircle(200, 200, x++, paint);
 }catch (Exception e) {
Log.i("",e.toString());
} finally{
 if(canvas !=null) 
sh.unlockCanvasAndPost(canvas);
}
 
   
}
public void run() {
      while (isRunning)      
      {
     drawView();
           try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
      }    

}
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {


Log.i("surfaceChanged","surfaceChanged");
}
public void surfaceCreated(SurfaceHolder holder) {
      Log.i("surfaceCreated","surfaceCreated");
         new Thread(this).start();
}
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
 Log.i("surfaceDestroyed","surfaceDestroyed");
 isRunning =false ;
}
//当按返回键报错时,第二种 处理方法 ,用其中一种可以
// @Override
// public boolean onKeyDown(int keyCode, KeyEvent event) {
// // TODO Auto-generated method stub
// if (keyCode == KeyEvent.KEYCODE_BACK) 
// {
// isRunning = false;
// }
// return super.onKeyDown(keyCode, event);
// }
// 

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值