视频:善知堂Android http://www.verycd.com/topics/2915940/
22:40 才回到家,雨好大。
第八集 surfaceView
1.surfaceView的好处
1.是view的子类,转门做动画的一个类。
2.自带二级缓存,会让动画更连贯一些。
2.使用
class GameView extends SurfaceView { private Paint paint = null; public GameView(Context context) { super(context); paint = new Paint(); paint.setColor(Color.RED); // View的控制器 final SurfaceHolder sh = this.getHolder(); // 注册一个监听,就是在View改变的时候执行是调用。 sh.addCallback(new Callback() { @Override public void surfaceDestroyed(SurfaceHolder holder) { // 销毁的时候执行内容 } @Override public void surfaceCreated(SurfaceHolder holder) { // 创建时候执行 // 将画面锁定 Canvas canvas = sh.lockCanvas(); canvas.drawLine(0, 0, 100, 100, paint); // 解锁 sh.unlockCanvasAndPost(canvas); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // 修改的时候执行 } }); } @Override protected void onDraw(final Canvas canvas) { super.onDraw(canvas); } }
3.很多时候都会同时实现 implements Callback, Runnable.
启动时机可以再窗体启动时候启动绘制线程
4.在终止循环中,要注意捕获异常和释放资源。
同时也可以阻塞一下默写窗体绘制,让循环内部可以完成一个流程。