2017-08-06 34 views
1

我想檢測一下按鈕沒有被點擊的時間。例如,在上面的代碼中,我想替換?????有一個條件表明imageview仍然被點擊並且一旦imageview不再被長時間點擊就退出循環。你有好主意嗎?Android:OnlongClickListener,檢測它何時停止

imageView.setOnLongClickListener(new View.OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 
      while(?????) 
      { 
       int number =(Integer.parseInt(hours.getText().toString())+1)%24; 
       String text_number= String.valueOf(number); 
       if(number>-1 && number<10) 
       { 
        text_number="0"+text_number; 
       } 
       hours.setText(text_number); 
      } 

      return true; 
     } 
    }); 
+0

試試這個:https://stackoverflow.com/a/10746549/7746134 –

回答

3

您可以使用View.OnTouchListener與View.OnLongClickListener

試試這個代碼

class Demo extends Activity { 
private Button mSpeak; 
private boolean isSpeakButtonLongPressed = false; 

@Override 
public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     setContentView(R.layout.blahlayout); 
     Button mSpeak = (Button)findViewById(R.id.speakbutton); 
     mSpeak.setOnLongClickListener(speakHoldListener); 
     mSpeak.setOnTouchListener(speakTouchListener); 
} 

private View.OnLongClickListener speakHoldListener = new View.OnLongClickListener() { 

     @Override 
     public boolean onLongClick(View pView) { 
      // Do something when your hold starts here. 
      isSpeakButtonLongPressed = true; 
      return true; 
     } 
} 

private View.OnTouchListener speakTouchListener = new View.OnTouchListener() { 

     @Override 
     public boolean onTouch(View pView, MotionEvent pEvent) { 
      pView.onTouchEvent(pEvent); 
      // We're only interested in when the button is released. 
      if (pEvent.getAction() == MotionEvent.ACTION_UP) { 
       // We're only interested in anything if our speak button is currently pressed. 
       if (isSpeakButtonLongPressed) { 
        // Do something when the button is released. 
        isSpeakButtonLongPressed = false; 
       } 
      } 
      return false; 
     } 
} 
    } 

希望這將有助於

1

使用View.OnTouchListener

例子:https://stackoverflow.com/a/39588668/4586742

你會得到onTouch回調有不同的事件。

MotionEvent.ACTION_DOWN:當用戶開始按下視圖。

MotionEvent.ACTION_UP:當用戶停止按下視圖。

0

從我能得到什麼你的問題和親爲你提出了答案。

`

public class Main2Activity extends AppCompatActivity { 

private boolean isImageViewBeingClicked = true; 
private boolean isLongPressed = false; 
private ImageView imageView; 
private TextView hours; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main2); 


    imageView = (ImageView) findViewById(R.id.imageView); 
    hours = (TextView) findViewById(R.id.textView); 

    imageView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 


      while (isImageViewBeingClicked) { 
       int number = (Integer.parseInt(hours.getText().toString()) + 1) % 24; 
       String text_number = String.valueOf(number); 
       if (number > -1 && number < 10) { 
        text_number = "0" + text_number; 
       } 
       hours.setText(text_number); 
      } 


     } 
    }); 


    imageView.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View view, MotionEvent motionEvent) { 
      if (motionEvent.getAction() == MotionEvent.ACTION_UP) { 
       if (isLongPressed) { 
        isImageViewBeingClicked = false; 
       } 
      } 
      return false; 
     } 
    }); 

    imageView.setOnLongClickListener(new View.OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 
      isLongPressed = true; 
      return false; 
     } 
    }); 

} 
} 

`