2012-11-15 8 views
7

मेरे पास एक बटन है और जब इसे दबाया जाता है तो यह एक ऑडियो फ़ाइल चलाता है। मैं बटन पर 5 सेकंड देरी डालना चाहता हूं ताकि उपयोगकर्ता बटन को मैश न करें और ध्वनि को ओवर-ओवर चलाएं। मुझे लगता है कि इसे धक्का देने के बाद 5 सेकेंड के लिए बटन को वास्तव में अक्षम करने के लिए मैं वास्तव में क्या चाहता हूं। क्या किसी को भी यह करना आता है?एंड्रॉइड: बटन के बाद देरी कैसे डाली जाती है?

+1

लेकिन एक 5 सेकंड की देरी उपयोगकर्ता एप्लिकेशन होने का आभास दे सकता है गैर-उत्तरदायी –

+0

यदि ऑडियो की लंबाई में परिवर्तन होता है, तो शायद आप मीडिया प्लेयर पर कॉलबैक पर विचार कर सकते हैं - http://stackoverflow.com/questions/6001497/calling-another-activity-when-mediaplayer-get-finished-playing - गतिविधि को कॉल करने के बजाय, आप अपने बटन –

+0

को फिर से सक्षम कर सकते हैं 'CountDownTimer' – Houcine

उत्तर

29

बटन के लिए अपने onClickListener में:

myButton.setEnabled(false); 

Timer buttonTimer = new Timer(); 
buttonTimer.schedule(new TimerTask() { 

    @Override 
    public void run() { 
     runOnUiThread(new Runnable() { 

      @Override 
      public void run() { 
       myButton.setEnabled(true); 
      } 
     }); 
    } 
}, 5000); 

यह जब क्लिक बटन को निष्क्रिय कर देगा, और 5 सेकंड के बाद फिर से सक्षम।

यदि क्लिक ईवेंट को कक्षा में संभाला जाता है जो एक गतिविधि में बजाए व्यू को बढ़ाता है तो वही काम करता है लेकिन runOnUiThreadpost के साथ प्रतिस्थापित करता है।

+0

पूरी तरह से काम करता है! आपका बहुत बहुत धन्यवाद – fargoh

2

यहां आप जाते हैं।

((Button) findViewById(R.id.click)) 
    .setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     ((Button) findViewById(R.id.click)).setEnabled(false); 

     new Handler().postDelayed(new Runnable() { 

      @Override 
      public void run() { 
       ((Button) findViewById(R.id.click)) 
        .setEnabled(true); 

      } 
     }, 5000); 

    } 
}); 
18

आप अपने बटन को अक्षम कर सकते हैं, फिर अपने बटन पर postDelayed विधि का उपयोग करें।

myButton.setEnabled(false); 
myButton.postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     myButton.setEnabled(true); 
    } 
}, 5000); 

यह टाइमर समाधान के लिए समान है, लेकिन यह बेहतर विन्यास परिवर्तन संभाल सकता है (उदाहरण के लिए उपयोगकर्ता फोन बारी बारी से अगर)

संबंधित मुद्दे