2014-12-22 2 views
0

단일 탭으로 값을 1 씩 올리거나 내릴 버튼 집합을 만들고 버튼을 눌러 값을 빠르게 변경하려고합니다. 나는 값을 빨리 바꾸는 방법을 알 수 없다. 다음은 내가 가지고있는 것입니다.onLongClickListener를 사용하여 값을 빠르게 변경하십시오.

btPlus.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     mTempo=mTempo+1; 
     setTempo(mTempo + 1); 
     tvTempo.setText(Integer.toString(mTempo)); 
     } 
    }); 
    btPlus.setOnLongClickListener(new View.OnLongClickListener() { 
     @Override 
     public void onLongClick(View view) { 
      mTempo = mTempo + 1; 
      setTempo(mTempo + 1); 
      tvTempo.setText(Integer.toString(mTempo)); 
     } 
    });        
    btMinus.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      mTempo=mTempo-1; 
      setTempo(mTempo - 1); 
      tvTempo.setText(Integer.toString(mTempo)); 
     } 
    }); 
    btMinus.setOnLongClickListener(new View.OnLongClickListener() { 
     @Override 
     public void onLongClick(View view) { 
      mTempo = mTempo - 1; 
      setTempo(mTempo - 1); 
      tvTempo.setText(Integer.toString(mTempo)); 
     } 
    });  
    return rootView; 
} 

도움 주셔서 감사합니다.

답변

0

버튼을 길게 누르는 것 이외의 방법입니다. onTouchListener

onPressed 메서드에서 MotionEvent가 UP 또는 DOWN인지 확인한 다음 계산을 시작/중지합니다.

편집 :

Final Thread t = new Thread(new Runnable(){ 
     @Override public void run(){ 
      while(!t.isInterrupted(){ 
      setTempo(mTempo++); 
      } 
     } 
switch (event){ 
case ACTION_DOWN: 
     t.start(); 
     break; 
case ACTION_UP: 
     t.interrupt(); 
     break 
} 
+0

내가 onTouchListener를 사용하여 이해할 수있다,하지만 난 여전히 버튼을 누르고있는 동안은 지속적으로 계산 얻는 방법과 사투를 벌인거야 : 그런, 스레드에서 뭔가를 계산하십시오. 어떤 추가 생각? –

+0

DOWN에서 새 스레드를 시작하고 시작할 수 있습니다. UP을하면 방해가됩니다. 쓰레드가 잠시 멈추지 않는다면 mTempo 루프를 반복하십시오 – Tobi

+0

조금 더 많은 도움을주는 마음입니까? 그것은 t가 내부 클래스로부터 액세스되었고 첫 번째 경우에 최종 선언되어야하고 두 번째 경우에 초기화되지 않았을 수 있다고합니다. –

관련 문제