2012-04-12 2 views
0

나는 Andoird의 초보자입니다.ImageView 클릭 우수 사례

제 경우에는 이미지의 특정 부분을 클릭하면 onclick 이벤트가 트리거되는 시나리오가 있습니다. onTouch가 해고 될 때 위치를 감지하려고 시도했지만 작동하지만 표준 구현이 아니라고 생각합니다. 그런 경우에 가장 좋은 방법은 무엇입니까?

감사합니다.

imgView.setOnTouchListener ((OnTouchListener) 새로운 OnTouchListener가() {

public boolean onTouch(View v, MotionEvent event) { 
    if(isIn(event.getX(), event.getY(), 124,3,221,36)){ 
     ShowMemberInfo(R.string.app_m01); 
    } else if(isIn(event.getX(), event.getY(), 8,155,72,181)){ 
     .. 
    } 
    return true; 
} 
private boolean isIn(float x, float y, int fx, int fy, int tx, int ty) { 
    return x<tx && x > fx && y<ty && y>fy; 
} 
+0

표준 구현이 아닌지 또는 모범 사례가 있는지 알 수 있도록 구현 사례를 보여줄 수 있습니까? – Th0rndike

+0

답변을 수정했습니다. :) 아마도 Rect를 사용하여 사용자 정의 감지 영역을 정의하고 contains()를 호출하여 터치 포인트가 영역 내부에 있는지 여부를 확인할 수 있습니다. – Chickenrice

답변

0

시도하면 (만진 이미지 뷰 사용자에게 상대) 사용자 터치 위치를 감지하려면 ImageButton

+0

이것은 매우 도움이됩니다 ... 아래 링크가 더 나은 접근 방법이 될 수 있습니다 ... [링크] (http://stackoverflow.com/questions/10137657/onclicklistener-issues-after-imagebutton-moved-after-translateanimation) – SICON

0

단순히 이미지 뷰에 대한 onClickListener()을 구현 onClick 이벤트를 구현하는

가장 쉬운 방법은 다음과 같습니다. 여기

같은 코드입니다 android:onClickMe="methodName"을 XML 레이아웃의 <ImageView> 안에 포함시키고 활동 파일 내에 해당 메소드를 정의하십시오.

예를 들어

:

public void methodName(View v) 
{ 
    .... 
    .... 

    // do whatever you want for click even ton imageview 
} 
0

를 사용하려면 MotionEvent 객체의 터치 포인트를 얻을 수 있습니다 .

터치 이벤트가 발생하면 ImageView에 대한 터치 이벤트 리스너를 등록하고 MotionEvent 객체의 getX() 및 getY() 메서드에서 터치 된 포인트 위치를 가져 오려고합니다. 그런 다음 사각형 영역을 정의하고 contains()를 사용하여 터치 점이 영역 내부에 있는지 여부를 확인합니다.

ImageView img = new ImageView(this); 
img.setOnTouchListener(new OnTouchListener(){ 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     Log.w("Hit test", "is hit? "+isIn(event.getX(),event.getY(),0,0,120,120)); 
     return false; 
    } 

}); 

private boolean isIn(float x, float y, int fx, int fy, int tx, int ty){ 
    return new Rect(fx,fy,tx,ty).contains((int)x,(int)y); 
} 

희망이 도움이 될 것입니다. :)