【发布时间】:2012-03-23 08:07:53
【问题描述】:
一直在寻找一些使用 SurfaceView 绘制画布的教程,但唯一出现的是黑色背景。
public class FighterActivity extends Activity implements OnTouchListener {
/** Called when the activity is first created. */
SurfaceController surface;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
surface = new SurfaceController(this);
surface.setOnTouchListener(this);
setContentView(surface);
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
surface.pause();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
surface.resume();
}
public class SurfaceController extends SurfaceView implements Runnable{
Thread thread = null;
SurfaceHolder holder;
public SurfaceController(Context context) {
super(context);
// TODO Auto-generated constructor stub
holder = getHolder();
System.out.println("HERE");
}
public void run() {
// TODO Auto-generated method stub
System.out.println("Hello World2");
while(true){
if(!holder.getSurface().isValid()){
System.out.println("NOT VALID");
continue;
}
System.out.println("VALID!");
Canvas can = holder.lockCanvas();
can.drawARGB(255, 150, 150, 0);
holder.unlockCanvasAndPost(can);
}
}
public void pause(){
}
public void resume(){
}
}
public boolean onTouch(View view, MotionEvent me) {
// TODO Auto-generated method stub
return false;
}
}
它到达 System.out.println("HERE");并在此处打印出来,但没有更多的事情发生,换句话说,由于未打印“Hello World2”,因此线程没有启动,这是什么问题?
感谢您的帮助
【问题讨论】:
-
你根本没有展示你是如何使用它的。听上去你是在调用构造函数,然后呢?
标签: android multithreading surfaceview android-canvas