मेरे पास एक बटन है और जब इसे दबाया जाता है तो यह एक ऑडियो फ़ाइल चलाता है। मैं बटन पर 5 सेकंड देरी डालना चाहता हूं ताकि उपयोगकर्ता बटन को मैश न करें और ध्वनि को ओवर-ओवर चलाएं। मुझे लगता है कि इसे धक्का देने के बाद 5 सेकेंड के लिए बटन को वास्तव में अक्षम करने के लिए मैं वास्तव में क्या चाहता हूं। क्या किसी को भी यह करना आता है?एंड्रॉइड: बटन के बाद देरी कैसे डाली जाती है?
7
A
उत्तर
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 सेकंड के बाद फिर से सक्षम।
यदि क्लिक ईवेंट को कक्षा में संभाला जाता है जो एक गतिविधि में बजाए व्यू को बढ़ाता है तो वही काम करता है लेकिन runOnUiThread
post
के साथ प्रतिस्थापित करता है।
+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);
यह टाइमर समाधान के लिए समान है, लेकिन यह बेहतर विन्यास परिवर्तन संभाल सकता है (उदाहरण के लिए उपयोगकर्ता फोन बारी बारी से अगर)
लेकिन एक 5 सेकंड की देरी उपयोगकर्ता एप्लिकेशन होने का आभास दे सकता है गैर-उत्तरदायी –
यदि ऑडियो की लंबाई में परिवर्तन होता है, तो शायद आप मीडिया प्लेयर पर कॉलबैक पर विचार कर सकते हैं - http://stackoverflow.com/questions/6001497/calling-another-activity-when-mediaplayer-get-finished-playing - गतिविधि को कॉल करने के बजाय, आप अपने बटन –
को फिर से सक्षम कर सकते हैं 'CountDownTimer' – Houcine