您的位置:首页 > 其它

SurfaceView简单用法

2014-07-18 13:52 281 查看
快速学会SurfaceView用法:

SurfaceView是视图(View)的继承类,这个视图里内嵌了一个专门用于绘制的Surface。你可以控制这个Surface的格式和尺寸。Surfaceview控制这个Surface的绘制位置。

第一步:

继承SurfaceView并实现SurfaceHolder.Callback接口

第二步: SurfaceView.getHolder()获得SurfaceHolder对象

第三步:SurfaceHolder.addCallback(callback)添加回调函数

第四步:SurfaceHolder.lockCanvas()获得Canvas对象并锁定画布

第五步:Canvas绘画

第六步:SurfaceHolder.unlockCanvasAndPost(Canvas canvas)结束锁定画图,并提交改变,将图形显示。

首先测试代码:

public class MySurfaceViewTestActivity extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(new MySurfaceView(this));

}

}

然后创建MySurfaceView类

public class MySurfaceView extends SurfaceView implements SurfaceHolder.Callback{

private Canvas canvas;

SurfaceHolder myholder;

public MySurfaceView(Context context) {

super(context);

System.out.println("构造方法");

//获取SurfaceHolder对象

myholder=getHolder();

//添加回调函数,绑定回调方法

myholder.addCallback(this);

}

@Override

public void surfaceChanged(SurfaceHolder holder, int format, int width,

int height) {

System.out.println("surfaceChanged方法");

}

@Override

public void surfaceCreated(SurfaceHolder holder) {

System.out.println("surfaceCreated方法");

//锁定画布

canvas=myholder.lockCanvas();

//设置画笔

Paint paint=new Paint();

paint.setColor(Color.RED);

//绘制图形

canvas.drawLine(10, 20, 40, 40, paint);

canvas.drawCircle(50, 50, 6, paint);

myholder.unlockCanvasAndPost(canvas);

Rect rect=new Rect(70, 70, 200, 200);

Canvas mycanvas=myholder.lockCanvas(rect);

paint.setColor(Color.GREEN);

//绘制图形

mycanvas.drawCircle(75, 75, 5, paint);

myholder.unlockCanvasAndPost(mycanvas);

}

@Override

public void surfaceDestroyed(SurfaceHolder holder) {

System.out.println("surfaceDestroyed方法");

//销毁时激发,一般在这里将画图的线程停止、释放。

myholder.unlockCanvasAndPost(canvas);

}

}

运行结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: