ये जवाब बहुत जटिल हैं। onClick
OnClickListener
से अभी भी लंबी प्रेस के अंत में कॉल किया जाता है यदि आप false
लौटाते हैं। एक लंबी प्रेस के अंत का पता लगाने के लिए यह सबसे आसान जगह है।
यह विशेष रूप से पता करने के लिए क्योंकि अगर आप onTouch
मार्ग को लागू करते हुए onLongClick
से false
लौटने महत्वपूर्ण है (डिफ़ॉल्ट रूप में आप देता है और अक्सर आप क्या चाहते हैं), अपने onClick
कोड आप बिना अपने लंबे प्रेस के अंत में कहा जा सकता है इसे महसूस करना
private boolean takingVideo = false;
captureButton.setOnClickListener(v -> {
// onClick gets called after normal click or long click
if(takingVideo) {
saveVideo();
} else {
takePhoto();
}
});
captureButton.setOnLongClickListener(v -> {
takeVideo();
return false;
});
private void takePhoto() {
// Save the photo
}
private void takeVideo() {
takingVideo = true;
// Start capturing video
}
private void saveVideo() {
takingVideo = false;
// Save the video
}
आप देख सकते हैं, तर्क बहुत सीधे आगे है जब आप एंड्रॉयड एक OnClickListener
के अंत स्पर्श घटना का प्रचार करते हो जाता है:
यहाँ एक उदाहरण एक फ़ोटो या वीडियो पर कब्जा करने पर आधारित है।
स्रोत
2017-11-03 16:25:27
आपको और अधिक समझाने की आवश्यकता है कि उपयोगकर्ता चलती स्थिति क्यों महत्वपूर्ण है। एक लंबी प्रेस के अंत का पता लगाने के लिए, बस setOnLongClickListener() का उपयोग करें। जब उपयोगकर्ता बटन जारी करता है तो onLongClick() विधि स्वचालित रूप से कॉल की जाएगी। – Squonk
यह गलत है - ऑन-लॉन्गक्लिक विधि को एक लंबे क्लिक के रूप में जल्द ही ट्रिगर किया जाता है - यानी: जैसे ही "लंबे क्लिक" के लिए टाइमआउट हुआ है, जब उपयोगकर्ता बटन को रिलीज़ नहीं करता है। –