一、View是没有缓存机制的,每次绘图都是重新绘制
如果要实用双缓冲机制的话。
1、自定义一个View 实现onDraw方法
2、调用这个方法,调用刷新onDraw()方法
ssinView.postInvalidate();
需要格外创建一个Canvas,每次都
3、
public void onDraw(Canvas canvas){
if(x >= 480){
x = 0;
//清空画布
canvas.drawColor(Color.BLACK);
//重新创建一个新的图
bitmap = Bitmap.createBitmap(480, 104, Config.ARGB_8888);
}else{
//在缓冲中将之前的图绘制好,然后在真正的Canvas上绘制缓冲中的图
Canvas c = new Canvas();
c.setBitmap(bitmap);
int y = (int)(A*Math.sin(x/180.0f*Math.PI));
System.out.println("==================y:"+y+"===x:"+x);
c.drawPoint(x, y+A, paint);
//canvas.save();
canvas.drawBitmap(bitmap, 0, 0,paint);
x+=5;
}
}
二、Surface实现了双缓冲技术
提供了一个类SurfaceHolder
1、继承SurfaceView 实现Callback接口(在new SurfaceView的时候会自动回调)
2、刷新SurfaceView
// TODO Auto-generated method stub
super.run();
while(flag == true){
//锁定,获得Canvas
Canvas canvas = surfaceHolder.lockCanvas(null);
onDraw(canvas);
//释放锁
surfaceHolder.unlockCanvasAndPost(canvas);
asinSurfaceView.x += 5;
try {
Thread.sleep(sleepTime);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}