2013-10-18 2 views
1

이동 및 확대/축소 기능이있는 ImageView 사용자 정의 및 버튼이 있습니다. 버튼을 먼저 클릭하면 ImageVIew에서 터치 이벤트를 비활성화하고 버튼을 두 번째 클릭하면 ImageVIew에서 터치 이벤트를 활성화하는 방법. 감사합니다. .터치 이벤트를 사용 중지 및 다시 사용하는 방법

+0

사용하고 각 버튼의 클릭 리스너에 이미지 뷰의 터치 이벤트를 해제합니다. –

답변

2

난 당신이 다음과 같은 방법으로 그것을 할 수 해하지 시도하지 않은 :

공공 부울 변수

public boolean isClickedFirstTime = true; 
당신의 이미지 뷰가 XML에서 진정한 사용할 수 있도록

온 클릭하십시오 귀하의 버튼의

@Override 
     public void onClick(View v) { 
    if (v.getId() == R.id.button_id) { //whatever your id of button 

    if(isClickedFirstTime) 
       { 
       imageView.setEnabled(false); 
       isClickedFirstTime = false; 
       } 
       else 
       { 
        imageView.setEnabled(true); 
        isClickedFirstTime = true; 
       } 
} 
1

나는 당신이 부울 또는 열거 형 (아래의 ViewState)을 사용하면 활동 상태를 쉽게 관리 할 수 ​​있습니다. onTouchEvent 콜백에 일단 활동이 원하는 상태가 아니면 반환하십시오.

여기 수행하는 방법은 매우 간단한 예입니다

private enum ViewState { 
    LOADING, // Just an example of other states you could have 
    VIEWING, 
    EDITING; 
} 

private ViewState eViewState = ViewState.VIEWING; 

/** 
* Event attached to your button. 
*/ 
@Override 
public void onClick(View v) { 
    if (eViewState == ViewState.EDITING) 
     eViewState = ViewState.VIEWING; 
    else 
     eViewState = ViewState.EDITING; 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    // Touch events should not be recorded if you're not editing anything. 
    if (eViewState != ViewState.EDITING) 
     return false; 

    // ... 
    // The rest of your code to scale, zoom, translate, etc 
}