SurfaceView是frontbuffer和backbuffer交替显示的,每次Post交替一次,按你这样写两个Buffer是不一样的所有奇数的Post画在一起,偶数的画在另外个Buffer,运行起来就会闪了。延时长一点就看的出来了。
应用上加缓冲就可以了。
1 2 3 4 5 6 7 8 9 10 11 12 | //加缓冲 private Paint[] paints= new Paint[ 2 ]; private Path[] paths= new Path[ 2 ]; //这样更新canvas paints[ 0 ]=paints[ 1 ]; paints[ 1 ]=mPaint; paths[ 0 ]=paths[ 1 ]; paths[ 1 ]=mPath; if (paints[ 0 ]!= null ) //画的时候还有画一次的 canvas.drawPath(paths[ 0 ], paints[ 0 ]); canvas.drawPath(mPath, mPaint); |