2014-06-17 3 views
2

현재 작은 프로젝트를 진행 중입니다. APP에 4 개의 버튼을 설정하고 버튼을 눌러서 버튼을 놓을 때까지 똑같은 작업을 계속해야합니다. (예를 들어,이 4 개의 버튼을 사용하여 컴퓨터의 방향을 제어해야합니다.)버튼을 눌렀다가 안드로이드에서 동일한 작업을 계속 실행하십시오.

나는 onTouch와 같은 몇 가지 다른 방법을 시도해 왔습니다. 그러나이 방법에서는 동일한 작업을 계속할 수 있도록 손가락을 약간 움직여야합니다. 그렇지 않으면 중지됩니다. 또한 onlongClickListener와 setpressed를 true로 설정합니다. 그들 중 누구도 내가 원하는 것을 가지고 있지 않습니다.

아무도 내가 이것을 호출 할 수있는 방법이나 논리를 구현할 수 있습니까? 정말 고맙습니다! :)

+0

http://stackoverflow.com/ 질문/4284224/android-hold-button-to-repeat-action –

답변

1

나는 onTouchListerner가 귀하의 요구 사항에 가장 잘 어울릴 것이라고 생각합니다. 작업을 수행하는 데 스레드를 사용하십시오. ACTION_DOWN 이벤트에서 스레드를 시작하고 ACTION_UP 이벤트에서 스레드를 중지하십시오. 이 당신을 위해 도움이 될 것입니다

((버튼) findViewById를 (R.id.leftBtn)). setOnTouchListener (새 OnTouchListener() {

 @Override 
     public boolean onTouch(View arg0, MotionEvent event) { 
      if(event.getAction() == MotionEvent.ACTION_DOWN){ 
       // start the thread 
       return true; 
      } else if(event.getAction() == MotionEvent.ACTION_UP){ 
       // stop the thread 
       return true; 
      } 
      return false; 

     } 
    }); 

희망.

1

정상적으로 클릭 리스너를 설정할 수 있으며 내부에서 스레드, 타이머, 백그라운드 태스크 또는 버튼을 눌렀는지 주기적으로 확인하는 다른 작업을 시작할 수 있습니다.

예를 들어, 당신은이 유사 그것을 할 수 :

final Button yourButton = (Button) view.findViewById(R.id.your_button); 
long timerInterval = 1000; //one second 
yourButton.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     final Timer t = new Timer(); 
     t.scheduleAtFixedRate(new TimerTask() { 
      public void run() { 
       if (yourButton.isPressed()) { 
        // do something (executing your code on button being pressed) 
       } else { 
        t.cancel(); 
       } 
      } 
     }, 0, timerInterval); 
    } 
}); 

코드 버튼을 누르고있는 초마다 실행됩니다.

관련 문제