onTouch에서 액션이 MOVE일떄 drawLine을 해주고 있는데,
한번 터치를하고 떼지도 않았는데 직선이 하나가 생깁니다.
소스상에서는 문제가 없어보이는데 한번 봐주셨으면 합니다.
int imgViewWidth = ((BitmapDrawable)signView.getDrawable()).getBitmap().getWidth();
int imgViewHeight = ((BitmapDrawable)signView.getDrawable()).getBitmap().getHeight();
bitmap = Bitmap.createBitmap(imgViewWidth, imgViewHeight, Bitmap.Config.ARGB_8888);
canvas = new Canvas(bitmap);
signPaint = new Paint();
signPaint.setColor(Color.BLACK);
signPaint.setStyle(Paint.Style.STROKE);
signPaint.setStrokeWidth(8);
signPaint.setAntiAlias(true);
signView.setImageBitmap(bitmap);
signView.setOnTouchListener(this);
따로 뷰를 만드는것이 아닌, layout.xml에서 이미지뷰를 만들고 그 이미지뷰 영역에만 드로우가 가능하게 구현중입니다.
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
downx = event.getX();
downy = event.getY();
break;
case MotionEvent.ACTION_MOVE:
upx = event.getX();
upy = event.getY();
Log.e(TAG, "ACTION_MOVE Width,Height" + downx + " / "+ downy);
canvas.drawLine(downx, downy, upx, upy, signPaint);
signPaint.setStrokeJoin(Paint.Join.ROUND);
signPaint.setStrokeCap(Paint.Cap.BUTT);
signView.invalidate();
downx = upx;
downy = upy;
break;
case MotionEvent.ACTION_UP:
upx = event.getX();
upy = event.getY();
break;
case MotionEvent.ACTION_CANCEL:
break;
default:
break;
}
return true;
} //onTouch
이렇게 줬는데, 왜 떼지도 않았는데 직선이 하나 생길까요
그리고 포지션?도 맞지 않아서요.
예를 들어, 저는 우측하단에 찍었는데 왼쪽에서 그려집니다.
아뭐가 문제인지 모르겠네요ㅠ_ㅠ
도움 부탁드려요..