마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

[부탁드려요] onTouch 이벤트시, drawLine 관련 문의입니다.

0 추천

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

 

이렇게 줬는데, 왜 떼지도 않았는데 직선이 하나 생길까요

그리고 포지션?도 맞지 않아서요.

예를 들어, 저는 우측하단에 찍었는데 왼쪽에서 그려집니다.

아뭐가 문제인지 모르겠네요ㅠ_ㅠ

도움 부탁드려요..

익명사용자 님이 2016년 3월 1일 질문

1개의 답변

0 추천
ACTION_MOVE의 경우 드래그개념이라고 보시면 됩니다.

 손가락을 떼었을때 그리는 것은 ACTION_UP 이벤트입니다.

 좌표의 경우 상대 좌표인지 절대 좌표인지 확인해 보세요.
안_드루이드 (14,510 포인트) 님이 2016년 3월 2일 답변
...