2012-05-18 2 views
0

바늘 그래픽을 회전하는 데 사용되는 onTouchEvents를 활성화하려면 내 액티비티에 이미지 버튼 (pushClick)을 설정하려고합니다. 안타깝게도 onTouchEvent는 이미지 버튼을 클릭했는지 여부에 관계없이 활성화되어 있습니다. 이미지 버튼을 클릭 할 때까지 onTouchEvent가 실행되지 않게하려면 어떻게합니까?onTouchEvent onClick 이벤트 시작

public void pushClick(View pushClick) { 
    switch (pushClick.getId()) { 
    case R.id.btn_push: 

     make(degrees); 

    } 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    switch (event.getAction()) { 
    case MotionEvent.ACTION_DOWN: 
     startRotating(); 
     break; 
    case MotionEvent.ACTION_UP: 
     stopRotating(); 
     break; 
    } 

    return super.onTouchEvent(event); 
} 

private void startRotating() { 
    returnRotating = false; 

    if (!keepRotating) { 
     keepRotating = true; 

     final Handler handler = new Handler(); 
     handler.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       if (keepRotating) { 
        degrees = (degrees + 1) % 360; 
        make(degrees); 

        handler.postDelayed(this, INTERVAL); 
       } 
      } 
     }, INTERVAL); 
    } 
} 

private void stopRotating() { 
    keepRotating = false; 

    if (!returnRotating) { 
     returnRotating = true; 

     final Handler handler = new Handler(); 

     handler.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       if (returnRotating) { 
        degrees = (degrees - 1) % 360; 
        make(degrees); 

        handler.postDelayed(this, INTERVAL); 
       } 
      } 
     }, INTERVAL); 
    } 
} 

답변

1
내가 거기에 이렇게 좋은 방법,하지만 여기 내 머리 위로 떨어져 내기 것

: 볼 어떤에서 당신이 첨부합니다 (

private boolean buttonClicked = false; 

public void pushClick(View pushClick) { 
    switch (pushClick.getId()) { 
    case R.id.btn_push: 
     buttonClicked = true; 
     make(degrees); 

    } 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    if(buttonClicked) 
    { 
     switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      startRotating(); 
      break; 
     case MotionEvent.ACTION_UP: 
      stopRotating(); 
      break; 
     } 
    } 

    return super.onTouchEvent(event); 
} 
+0

이것은 실제로 매력처럼 작동했습니다! int를 사용하여 onTouchEvent에 if()를 추가하는 방법을 알아 내려고했지만 구문에 많은 문제가있었습니다. 엄청 고마워! – n00bdev

0

당신은 또한 OnTouchListener를 추가 할 수 있습니다 ~)을 클릭하고 다시 클릭 할 때 제거합니다 (원하는 경우).

+0

onTouchListener를 이미지 버튼 섹션으로 부울로 이동하려고 시도했지만 강제로 닫아서 더 쉽게 접근 할 수 있도록 보완했습니다. – n00bdev