android第五天晚:surfaceView

视频:善知堂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.在终止循环中,要注意捕获异常和释放资源。

同时也可以阻塞一下默写窗体绘制,让循环内部可以完成一个流程。

原文地址:https://www.cnblogs.com/wanself/p/2580169.html