关于SurfaceView类

来源:互联网 发布:网络暴力危害数据 编辑:程序博客网 时间:2024/05/18 00:15
 

关于SurfaceView类:

SurfaceView 可以直接访问一个画布,提供给需要直接画像素而不是使用窗体部件的应用使用的。每一个SurfaceView创建一个Canvas对象,用来管理View在SurfaceView的绘图操作。

使用SurfaceView时需要实现SurfaceHolder.Callback接口。一下是这个接口的方法:

surfaceChange:在Surface的大小改变时激发。

surfaceCreate:在创建Surface时激发。

surfaceDestroy:在销毁Surface时激发。

addCallback:给SurfaceView添加一个回调函数

lockCanvas:锁定画布,绘图之前必须锁定画布才能得到当前画布对象。

unlockCanvasAndPost:绘制完成之后解锁画布。

RemoveCallback:从SurfaceView中移除回调函数。

 

****SurfaceView和view明显的不同是:Surface不需要通过线程来更新视图,但在绘制之前必须使用lockCanvas方法来锁定画布,并得到画布,然后在画布上绘制,当绘制完成之后,使用unlockCanvasAndPost方法来解锁画布。这样才能显示在屏幕上。

附上一个例子:

public class TestSurfaceViewActivity extends Activity {

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

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

      //  setContentView(R.layout.main);

        setContentView(new Myview(this));

    }

    //内部类

    class Myview extends SurfaceView implements SurfaceHolder.Callback{

    SurfaceHolder surfaceHolder;

       public Myview(Context context) {

           super(context);

           surfaceHolder=this.getHolder();

           surfaceHolder.addCallback(this);

       }

 

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

              int height) {

           // TODO Auto-generated method stub

          

       }

 

       public void surfaceCreated(SurfaceHolder holder) {

           new Thread(new Mythread()).start();

          

       }

 

      

       public void surfaceDestroyed(SurfaceHolder holder) {

           // TODO Auto-generated method stub

          

       }

       //内部类的内部类实现

       class Mythread implements Runnable{

 

           public void run() {

              Canvas canvas=surfaceHolder.lockCanvas();

              Paint paint=new Paint();

              paint.setColor(Color.RED);

              canvas.drawRect(new Rect(40, 60, 80, 80), paint);

              surfaceHolder.unlockCanvasAndPost(canvas);

           }

          

       }

   

    }

}

原创粉丝点击