2011-08-04 9 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

答えて

関連する問題