使用SurfaceView在画布上查看背景

时间:2015-11-10 20:43:19

标签: android surfaceview

如何使用在另一个类中创建的View作为SurfaceView上Canvas的背景(非位图)?例如,我在一个类中创建了Matrix并希望在另一个扩展SurfaceView的类中使用它作为背景?我不喜欢我不想将整个Matrix添加到线程中,因为我不希望每次线程更新时我的画布都会重新绘制它。

Thread t=null;
SurfaceHolder holder;
boolean isRunning=false;
int x=200;

public ZmijicaSV(Context context) {
    super(context);
    holder=getHolder();
}

public void run()
{
    Paint p=new Paint();
    p.setColor(Color.BLUE);
    p.setStyle(Paint.Style.FILL);

     while(isRunning)
     {

         if(!holder.getSurface().isValid()) {
             continue;
         }
         Canvas c=holder.lockCanvas();
         c.drawColor(Color.WHITE);
         c.drawRect(x,0,x+100,100,p);
         holder.unlockCanvasAndPost(c);
         x+=10;

         try {
            t.sleep(500);

         } catch (InterruptedException e) {
             e.printStackTrace();
         }
     }
}

public void resume()
{
    isRunning=true;
    t=new Thread(this);
    t.start();
}

public void pause()
{
    isRunning=false;
    while(true)
    {
        try {
            t.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        break;
    }
    t=null;
}

0 个答案:

没有答案