Android之SurfaceView的简单介绍

SurfaceView是View的一个特殊子类,它的目的是另外提供一个线程进行绘制操作。

 要使用SurfaceView进行绘制,步骤如下:

  1.用SurfaceView进行绘制,首先要创建一个对象。

  2.对Surface对象的操作是通过SurfaceHolder来进行的。所以,在你的SurfaceView类初始化的时候,你需要调用 getHolder()来获得SurfaceHolder对象,然后用addCallback()加上回调接口(因为你的类实现了相应的接口,所以此处传入this即可)。这个接口中实现的三个回调函数(surfaceChanged(SurfaceHolder holder, int format, int width, int height),surfaceCreated(SurfaceHolder holder),surfaceDestroyed(SurfaceHolder holder))分别对应Surface何时更改、创建和销毁。

  3.在你的SurfaceView类中应该建立一个线程类,处理绘制操作。为此,要向这个线程类传递上面获得的SurfaceHolder对象。

  4.绘制:在线程类的run()方法中进行绘制操作,通过lockCanvas()方法获得Canvas对象,然后就可以用这个对象进行绘制,绘制完成后调用unlockCanvasAndPost(),传入Canvas对象,这时Surface将会按Canvas进行绘制。

关键代码:

布局:



    



Activity中:

//要知道SurfaceView什么时候是完全绘制完成的
		surfaceView.getHolder().addCallback(new Callback() {

			@Override
			public void surfaceCreated(SurfaceHolder holder) {
				// TODO Auto-generated method stub
				System.out.println("created");
				new Thread(){
					public void run() {
						for(int i=0;i<=360;i++){
							SurfaceHolder surfaceHolder=surfaceView.getHolder();
							//锁住画布
							Canvas canvas=surfaceHolder.lockCanvas();
							Paint paint=new Paint();
							paint.setColor(Color.RED);
							canvas.drawArc(new RectF(50, 50, 400,400), 0, i, true, paint);
							 //通知界面更新
							surfaceHolder
							.unlockCanvasAndPost(canvas);
						}
					};
				}.start();
				
			}


  


你可能感兴趣的:(安卓)