Have been looking on some tutorials for drawing canvas using SurfaceView, but the only thing that shows up is a black background.
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;
}
}
It gets to the System.out.println(“HERE”); and prints out HERE, but nothing more happends, In other words the thread does not get started since “Hello World2” is not printed, what is the problem?
Thanks for any help
I’m assuming you’re building off of this: http://android-coding.blogspot.ca/2011/05/drawing-on-surfaceview.html
You’ll notice there the
onResumeMySurfaceViewandonPauseMySurfaceView(resumeandpausein yourSurfaceController, respectively) start the actual thread. You’ll need to do that in your code, too, e.g. inSurfaceController: