国庆收假 看着上次写的笔记都有十几天了! 加油了~~~~
SurfaeView&添加一个线程执行
1) 首先新建MySurfaceView继承SurfaceView类实现Callback and Runnable接口
public class ThreadMySurface extends SurfaceView implements Callback,Runnable
2) 生成一个控制Surface大小格式和监听状态的类 SurfaceHolder,直接在函数中用this.getHolder(SurfaeView提供)得到一个实例;
public ThreadMySurface(Context context) {
super(context);
sfh = this.getHolder();//对其的实例化
sfh.addCallback(this);
paint = new Paint();
paint.setColor(Color.RED);
setFocusable(true);
// TODO Auto-generated constructor stub
}
3) 线程的初始化和启动都写在视图的surfaceCreat创建函数中,并且让标示符在视图摧毁的时候置为false;这样可以避免线程的无限增多和线程已启动的异常;
SurfaeView&添加一个线程执行
1) 首先新建MySurfaceView继承SurfaceView类实现Callback and Runnable接口
public class ThreadMySurface extends SurfaceView implements Callback,Runnable
2) 生成一个控制Surface大小格式和监听状态的类 SurfaceHolder,直接在函数中用this.getHolder(SurfaeView提供)得到一个实例;
public ThreadMySurface(Context context) {
super(context);
sfh = this.getHolder();//对其的实例化
sfh.addCallback(this);
paint = new Paint();
paint.setColor(Color.RED);
setFocusable(true);
// TODO Auto-generated constructor stub
}
3) 线程的初始化和启动都写在视图的surfaceCreat创建函数中,并且让标示符在视图摧毁的时候置为false;这样可以避免线程的无限增多和线程已启动的异常;
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
screenW = this.getWidth();
screenH = this.getHeight();
flag = true;
th = new Thread(this);
th.start();
}
4) Canvas画布的实例化和解锁提交 在try中使用sfh.lockCanvas; 最后提交是在finally中实现
5) 保持刷帧时间的一致 采用一个像系统获取一个时间戳 long start = System.currentTimeMills();运行完相关程序一个时间戳 end; 两者之间的差固定在某个数值
if((end-start)<maxsleep){ thread.sleep(maxsleep-(end - start))};