이동 및 확대/축소 기능이있는 ImageView 사용자 정의 및 버튼이 있습니다. 버튼을 먼저 클릭하면 ImageVIew에서 터치 이벤트를 비활성화하고 버튼을 두 번째 클릭하면 ImageVIew에서 터치 이벤트를 활성화하는 방법. 감사합니다. .터치 이벤트를 사용 중지 및 다시 사용하는 방법
1
A
답변
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
}
사용하고 각 버튼의 클릭 리스너에 이미지 뷰의 터치 이벤트를 해제합니다. –