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

캔버스 터치좌표 구하기

0 추천

캔버스로 네모를 그리고 그 비트맵을 이미지뷰에 뿌려주었습니다.

그리고나서 이미지뷰에 터치리스너를 걸고 터치될떄 터치영역이 캔버스에서 그린 네모의

안인지 밖인지 구분하려고하는데요,, 캔버스영역에서 그린 네모상자라서 지금은 일단

제가 터치좌표를 일일이 찍어서 하드코딩으로 구분하고있는데요..

하드코딩말고 캔버스에서 그린 네모의 영역을 체크 할 수 있는 방법이 있을까요?

 

지난주에 질문 올려서 Rect.contains 쓰라고 하신 분이 있어 해봤는데 

좌표가 전혀 맞지 않아서 다시 질문 올립니다.. 

아래는 Rect.contains를 사용한 코드입니다. 좌표가 전혀 맞지 않습니다.. 도와주세요..

Bitmap bitmap = Bitmap.createBitmap(basePreviewWidth, basePreviewHeight, Bitmap.Config.ARGB_8888);

Canvas canvas= new Canvas(bitmap);
 
Rect rect = new Rect();
rect .set((int) (316f * sRatio), (int) (285f * sRatio), (int)(539f * sRatio), (int) (370f * sRatio));
canvas.drawRect(rect, paint);
 
ImageView imageView = new ImageView(context);
imageView.setImageBitmap(bitmap);
imageView.setPadding(10, 10, 10, 10);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setLayoutParams(new LinearLayout.LayoutParams(preViewWidth, preViewHeight));
 
imageView.setOnTouchListener(new View.OnTouchListener() {
                        @Override
                        public boolean onTouch(View v, MotionEvent event) {
                                if (rect.contains((int) event.getX(), (int) event.getY())) {
                                       System.out.println("true!!!");
                                } else {
                                      System.out.println("false!!!");  
                                }
                        }
            });
view.add(imageView);

 

익명사용자 님이 2015년 3월 9일 질문

1개의 답변

0 추천
 
채택된 답변
위 정보만 가지고는 코드를 넣어서 테스트를 해보려 해도 알 수 없는 부분들이 너무 많네여

아예 풀 코드를 올리시거나 로그를 좀 남겨서 어디가 잘못 된건지 직접 디버깅 해보세여

어디가 잘못되었는지 알려면 단순히 true, false로 만 할 것이 아니라

Rect의 정확한 영역과(x, y 시작점과 끝점),  터치 영역의 x값과 y값을 로그로 남겨 눈으로 확인해봐야 합니다.
Gradler (109,780 포인트) 님이 2015년 3월 9일 답변
이미지뷰 크기랑 비트맵 크기가 달라서 그랬네요 감사합니다.
...