2012-04-27 90 views
-2

我正在制作一个简单的绘画应用程序,这是我第一次使用画布。我已经在我的布局xml中使用了SurfaceView,并且该ID是正确的。无论如何,这里是我的代码:Android帆布不显示

package com.example.paint; 

import android.app.Activity; 
import android.graphics.Canvas; 
import android.os.Bundle; 
import android.view.SurfaceHolder; 
import android.view.SurfaceView; 

public class Paint extends Activity { 
/** Called when the activity is first created. */ 

SurfaceView v; 
SurfaceHolder holder; 
Canvas c; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    v = (SurfaceView) findViewById(R.id.svDraw); 
    holder = v.getHolder(); 

    while (true) { 
     try { 
      Thread.sleep(1000); 
     } catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     if (!holder.getSurface().isValid()) 
      continue; 

     c = holder.lockCanvas(); 
     c.drawARGB(255, 0, 255, 0); 
     holder.unlockCanvasAndPost(c); 
    } 
} 
} 

谢谢。

+0

又有什么问题属于? – 2012-04-27 22:51:36

+3

你的应用程序将ANR,因为你永远在'onCreate'中阻止UI线程。查看[LunarLander](http://developer.android.com/resources/samples/LunarLander/src/com/example/android/lunarlander/index.html)Api演示,了解它的工作原理。 – zapl 2012-04-27 22:58:27

回答

2

你需要删除while(true),它是一个无限循环,防止发生任何事情。

绘图代码在你ViewonDraw方法包含您的画布对象