2012-09-18 2 views
1

안드로이드 프로그래밍에 익숙하지 않습니다. & 다른 모양의 드래그 & 터치 이벤트를 처리 할 수있는 간단한 프로그램을 만들려고합니다.android.graphics 패키지의 도형에 이벤트 리스너 추가

안드로이드 API에서 위젯 (예 : ImageView)에 이벤트 리스너를 추가하는 것이 쉽다는 것을 알고 있습니다. 하지만 RectF 나 Circle과 같은 그래픽에서는 어떻게해야합니까?

저는 초보자이므로 누군가가 더 간단한 용어로 설명 할 수 있으면 감사하겠습니다.

+0

상황을 어떻게 설정합니까? ondraw 메서드를 재정의하는 사용자 지정보기를 사용하고 있습니까? 다른 사람들이 귀하의 문제에 대해 더 잘 이해할 수 있도록 일부 코드를 게시하십시오 –

답변

0

과 같은 항목은 View 클래스의 하위 집합에만 추가 할 수 있습니다.

그러나 모양 등의 경우 기본 레이아웃의 onTouch() 메서드를 재정의 할 수 있습니다. 그런 다음 MotionEvent.ACTION_DOWN에서 터치 점의 좌표를 가져 와서 도형과 교차하는지 확인합니다. 셰이프와 교차하는 경우 사용자가 해당 셰이프를 클릭하면 필요한 코드를 구현할 수 있습니다.

+0

이 기능을 향상 시키려면 그리려는 모양을 나타내는 클래스를 만드는 것이 좋습니다. Canvas를 인수로 사용하는 draw() 메서드를 포함하십시오. 또한 도형이 그릴 x 및 y 좌표 (또는 Rect)도 포함시킵니다. 부모 뷰의 onDraw() 메서드에서 뷰의 캔버스를 통과하는 각 드로잉 클래스의 draw 메서드를 호출합니다. 이제 wasTouched (x, y)와 같은 새로운 클래스에 메소드를 추가하십시오. onTouch 이벤트에서 각 드로잉 클래스의 wasTouched() 메서드를 호출하여 해당 드로잉 클래스가 터치되었는지 확인한 다음 필요한 모든 작업을 수행합니다. – Simon

+0

예, 훨씬 구조화 된 방식으로 작동합니다. –

0

당신은 터치가있을 때마다

는 터치가 특정 내부에 있는지 여부를 감지하는 터치

사용 Rect.contains (X, Y) 좌표를 얻을 당신의보기의 onTouch 메소드를 오버라이드 (override) 할 수 있습니다 Rect

그에 따라 조치 수행