2012-10-31 23 views
0

我的MainActivity代碼如下:SurfaceView不顯示我想在我的MainActivity繪製的動畫動畫

public class LaozhangActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    Ch0_1 view=new Ch0_1(this); 
    super.onCreate(savedInstanceState); 
    setContentView(view); 


} 
} 

,我已經定義了爲了顯示一個動畫擴展SurfaceView一類; 的代碼是這樣的:

public class Ch0_1 extends SurfaceView implements Callback, Runnable 
{ 

SurfaceHolder surfaceHolder; 

private boolean isThreadRunning = true; 

Canvas canvas; 
float r = 10; 

public Ch0_1(Context context) 
{ 

super(context); 

    surfaceHolder = this.getHolder(); 

    surfaceHolder.addCallback(this); 
    canvas=new Canvas(); 
} 

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

} 

public void surfaceCreated(SurfaceHolder holder) 
{ 

    new Thread(this).start(); 
} 

public void surfaceDestroyed(SurfaceHolder holder) 
{ 

} 


private void Method(int x,int y) 
{ 

    Paint pen=new Paint(); 
    pen.setColor(Color.GREEN); 

    canvas=surfaceHolder.lockCanvas(); 
    canvas.drawLine(0, 0, x, y, pen); 
    surfaceHolder.unlockCanvasAndPost(canvas); 

} 

public void run() 
{ 
    while (isThreadRunning) 
    { 
    int x=0,y=0; 
    Method(x,y); 
     try 
     { 
      Thread.sleep(100); 
     } catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
     x+=10; 
     y+=10; 
     if(x>400)break; 
    } 
} 
} 

運行時,在MainActivity是黑色的,它並沒有顯示圖片。
問題在哪裏?

+0

你是不是在畫什麼畫布等 在開始您的代碼之前,您應該看到http://www.droidnova.com/2d-tutorial-series-part-i,770.html教程。 – Dharmendra

+0

是的,他實際上在'Method'方法中畫了一條線(參見我的答案) – fiddler

回答

0

與您的代碼,X和Y在每次迭代被重置爲0 ... 您必須將x和y的初始化while循環之外:

public void run() { 
     int x = 0, y = 0; 
     while (isThreadRunning) { 
      Method(x, y); 
      try { 
       Thread.sleep(100); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
      x += 10; 
      y += 10; 
      if (x > 400) 
       break; 
     } 
    }