안녕하세요 고수님들
카메라에 구도를 맞추는 삼등분선을 그리려고 하고있습니다.
framelayout으로 서피스뷰 두개를 겹쳐서 아래쪽은 카메라 프리뷰로 지정하고
위쪽에 삼등분선을 그리는 방식으로 구현하려고 하고 있습니다.
그런데 이 녀석을 핸드폰에 돌려보니(갤럭시 넥서스) 처음 실행에는 삼등분선이 안그려지는데
멀티태스킹 전환을 이용해서 다시 어플로 돌아오면 삼등분선이 그려져 있습니다ㅜㅜ
처음 실행했을때도 바로 삼등분선이 그려졌으면 하는데 너무 답답합니다 ㅜㅜ
여기가 삼등분선이 그려지는 서피스뷰입니다 주석처리된 스레드 부분은 스레드로 그리려고 한거였는데 이건 아예 에러 납니다 ㅜㅜ
public class GridView extends SurfaceView implements Callback {
Context mContext;
SurfaceHolder mHolder;
int mWidth =0;
int mHeight =0;
DrawThread mThread;
public GridView(Context context) {
super(context);
// TODO Auto-generated constructor stub
init(context);
}
private void init(Context context) {
// TODO Auto-generated method stub
mContext = context;
mHolder = getHolder();
mHolder.addCallback(this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
public GridView(Context context, AttributeSet attrs, int defStyle) {
super(context);
// TODO Auto-generated constructor stub
init(context);
}
public GridView(Context context, AttributeSet attrs) {
super(context);
// TODO Auto-generated constructor stub
init(context);
}
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// TODO Auto-generated method stub
mWidth = width;
mHeight = height;
// mThread.SizeChange(width, height);
// Log.e("smiplecamerawannabe","draw method started by surfaceChanged");
draw();
}
public void surfaceCreated(SurfaceHolder arg0) {
// TODO Auto-generated method stub
mHolder.setFormat(PixelFormat.TRANSPARENT);
// mThread = new DrawThread(mHolder);
// mThread.start();
// Log.e("smiplecamerawannabe","draw method started by surfaceCreated");
// draw();
}
public void surfaceDestroyed(SurfaceHolder arg0) {
// TODO Auto-generated method stub
// try {
// mThread.join();
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
//// e.printStackTrace();
// }
}
public void draw() {
Canvas canvas;
Paint pnt = new Paint();
pnt.setColor(Color.GRAY);
pnt.setStrokeWidth(1);
canvas = mHolder.lockCanvas();
mWidth = canvas.getWidth();
mHeight = canvas.getHeight();
Log.e("smiplecamerawannabe","height is " + mHeight);
canvas.drawLine(mWidth/3, 0.0f, mWidth/3, mHeight, pnt);
canvas.drawLine(mWidth*2/3, 0.0f, mWidth*2/3, mHeight, pnt);
canvas.drawLine(0.0f, mHeight/3, mWidth, mHeight/3, pnt);
canvas.drawLine(0.0f, mHeight*2/3, mWidth, mHeight*2/3, pnt);
// canvas.drawRect(new Rect(0,0,200,200), pnt);
mHolder.unlockCanvasAndPost(canvas);
}
}