SurfaceView实现Runnable - 线程没有启动
问题描述:
一直在寻找一些教程绘制使用SurfaceView帆布,但显示出来的仅仅是一个黑色的背景。SurfaceView实现Runnable - 线程没有启动
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”);这里打印出来,但仅此而已happends,换句话说线程不上手,因为“你好World2”不能打印,是什么问题?
感谢所有帮助
答
我假设你正在构建关闭的这一点:http://android-coding.blogspot.ca/2011/05/drawing-on-surfaceview.html
你(分别为resume
和pause
在SurfaceController
)注意到那里的onResumeMySurfaceView
和onPauseMySurfaceView
启动实际的线程。您也需要在代码中执行此操作,例如在SurfaceController
:
protected boolean running = false;
public void resume() {
running = true;
thread = new Thread(this);
thread.start();
}
+0
啊哈,当然,这就是它!非常感谢! :d – Araw 2012-03-23 08:31:03
你没有显示你是如何使用*它的。通过它的声音,我们在调用构造函数,但是然后呢? – 2012-03-23 08:10:31
添加的代码现在 – Araw 2012-03-23 08:17:19