2011-08-04 61 views
0

我有一些位图,我想连续显示一个接一个,但我的代码只显示最后一个位图。可以有人告诉我为什么会发生? 这里是代码在画布上显示位图问题

类板延伸SurfaceView实现SurfaceHolder.Callback {

private boolean _run = false; 

    public Panel(Context context) { 

     super(context); 

     getHolder().addCallback(this); 

     _run = true; 

    } 

    @Override 
    public void onDraw(Canvas canvas) { 



    } 

    @Override 
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { 

     Log.i("Read","surfaceChanged is called"); 
    } 

    @Override 
    public void surfaceCreated(SurfaceHolder holder) { 

     Log.i("Read","surfaceCreated is called"); 

     while (_run) { 

      display(); 
     } 


    } 

    public void display() { 

     Canvas c; 

     c = null; 

     try { 

      c = getHolder().lockCanvas(null); 

      synchronized (getHolder()) { 

       onPreviewFrame(); 

       invalidate(); 

       c.drawColor(Color.BLACK); 

       c.drawBitmap(bmp, 10, 10, null); 

       //panel.surfaceDestroyed(panel.getHolder()); 
      } 

     } finally { 

      if (c != null) { 

       getHolder().unlockCanvasAndPost(c); 
      } 

     } 


    } 

    @Override 
    public void surfaceDestroyed(SurfaceHolder holder) { 

     Log.i("Read","surfaceDestroyed is called"); 

     _run = false; 


    } 

    } 
+0

其余的代码在哪里? bmp从哪里来?或者我只是想念它? – Jack

+0

假设位图bmp是我们在这部分代码中已经创建的,这是代码的主要部分,它正在显示位图... –

+0

为了了解为什么只有最后一个位图被使用,我需要看到更改正在使用的位图的代码 – Jack

回答