useres가 태블릿에 활성 펜을 사용하여 그림을 그릴 수있는 Android 앱을 만듭니다. 사용자는 다양한 도구를 제공하는 다양한 모드 (예 : 펜, 지우개, 선, 원) 중에서 선택할 수 있습니다.
선 및 원 도구를 사용하면 사용자가 길이/반경 및 방향을 사용하여 선/원을 그릴 수 있습니다. 이것은 아주 잘 작동하지만, 사용자가 펜을 움직이면 다른 줄/원이 그려지며 화면을 채 웁니다.Android : 한 지점에서 다른 지점으로 선을 그려 보자.
코드 :
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
canvas = new Canvas(mBitmap);
}
@Override
protected void onDraw(Canvas c){
c.drawBitmap(mBitmap, 0, 0, bitmapPaint);
}
private float mX, mY, firstX, firstY;
private void touch_start(float x, float y) { //called from MotionEvent.ACTION_DOWN
path.moveTo(x, y);
firstX = x;
firstY = y;
mX = x;
mY = y;
}
private void touch_move(float x, float y) { //called from MotionEvent.ACTION_MOVE
path.quadTo(mX, mY, (x + mX)/2, (y + mY)/2);
switch(mode){
case "line":
canvas.drawLine(firstX, firstY, x, y, paint);
break;
case "circle":
canvas.drawCircle(firstX, firstY, (Math.abs(firstX-x) + Math.abs(firstY-y))/1.5f, paint); // divisor 1.5 just a rough value
break;
default:
canvas.drawPath(path, paint);
break;
}
mX = x;
mY = y;
}
사람이 내가이 생각 고칠 수 어떻게?
미리 감사드립니다.
:
이 새로운
touch_move
입니다. 'touch_move()'를 호출하기 전에'invalidate()'가 없다면, 그것도 필요할 것입니다. – Gary99