public class MainActivity extends Activity {
String LibTag = "Lib";
SufView sfView;
Button BtnStart, BtnStop;
private final int _MRV_START = 1;
private final int _MRV_STOP = 2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//sfView = (SufView) findViewById(R.id.surfaceView1); //이부분 주석풀면 실행종료되요
BtnStart = (Button) findViewById(R.id.button1);
BtnStop = (Button) findViewById(R.id.button2);
BtnStart.setOnClickListener(startListener);
BtnStop.setOnClickListener(stopListener);
}
Button.OnClickListener startListener = new Button.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
sfView.setSelectNumber(_MRV_START);
}
};
Button.OnClickListener stopListener = new Button.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
sfView.setSelectNumber(_MRV_STOP);
}
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
class SufView extends SurfaceView implements SurfaceHolder.Callback {
String sfViewLibTag = "sfView";
private boolean bInit;
private int selectNum;
private Context context;
private SurfaceHolder holder;
private Paint paint;
private Path path;
//private WorkerThread wThread;
public SufView(Context context, AttributeSet attrs) {
super(context);
// TODO Auto-generated constructor stub
this.context = context;
this.holder = getHolder();
this.holder.addCallback(this);
//wThread = new WorkerThread(context, holder, this);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
if (!bInit) {
canvas.drawColor(Color.BLACK, Mode.CLEAR);
bInit = true;
}
if (canvas == null) {
Log.e(sfViewLibTag, "canvas is null");
} else {
canvas.drawPath(path, paint);
}
}
public void setSelectNumber(int num) {
this.selectNum = num;
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// TODO Auto-generated method stub
Log.d(sfViewLibTag, "surfaceChanged called...");
paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(Color.WHITE);
paint.setStrokeWidth(10);
paint.setStyle(Paint.Style.STROKE);
setFocusable(true);
path = new Path();
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
Log.d(sfViewLibTag, "surfaceCreated called...");
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
Log.d(sfViewLibTag, "surfaceDestroyed called...");
}
}
지금 쓰레드는 연결도 안한 상태로 서피스뷰만 연결하려고 하면 실행되다가 죽어버립니다. 어떤부분을 손봐야 될 지 알려주시면 감사하겠습니다.