android中SurfaceView的简单介绍

来源:互联网 发布:淘宝丝袜买家真人秀图 编辑:程序博客网 时间:2024/06/05 11:54

什么时候使用SurfaceView?

当 自定义的View 需要频繁更新,刷新的数据量 大的时候,SurfaceView是通过子线程来进行刷新的。

SurfaceView如何使用?

SurfaceView在 使用时,有一套可供参考的模板,大部分的SurfaceView绘图操作都可套用这个模板。

public class MySurfaceView extends SurfaceView        implements SurfaceHolder.Callback, Runnable {    private SurfaceHolder holder;    private boolean isDrawing;    private Canvas canvas;    public MySurfaceView(Context context) {        this(context, null);    }    public MySurfaceView(Context context, AttributeSet attrs) {        this(context, attrs, 0);    }    public MySurfaceView(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);        init();    }    //初始化    private void init() {        holder = getHolder();        holder.addCallback(this);        holder.setFormat(PixelFormat.RGB_565);        //        setFocusable(true);        setFocusableInTouchMode(true);        setKeepScreenOn(true);    }    //绘制    private void draw() {        canvas = holder.lockCanvas();        //进行 绘制        //todo        if (canvas != null) {            holder.unlockCanvasAndPost(canvas);        }    }    //---------------    @Override    public void surfaceCreated(SurfaceHolder holder) {        isDrawing = true;        //启动 子线程        new Thread(this).start();    }    @Override    public void surfaceChanged(SurfaceHolder holder,                               int format, int width, int height) {    }    @Override    public void surfaceDestroyed(SurfaceHolder holder) {        isDrawing = false;    }    @Override    public void run() {        while (isDrawing) {            draw();        }    }}


0 0
原创粉丝点击