स्क्रोलिंग को कई चरणों में बांटा गया है. इनपुट डेल्टा को चरणों के क्रम में भेजा जाता है, ताकि हर चरण में मूवमेंट को इस्तेमाल करने या उस पर प्रतिक्रिया करने का मौका मिले.
इस पूरे साइकल के दौरान, उपलब्ध इनपुट डेल्टा और इस्तेमाल किया गया इनपुट डेल्टा, हर चरण में पास किया जाता है. इससे हर चरण को वह पूरा कॉन्टेक्स्ट मिलता है जिसकी ज़रूरत स्क्रोल इवेंट पर प्रतिक्रिया करने, उसे इस्तेमाल करने या उसे सुनने के लिए होती है.
पहली इमेज में दिखाए गए तरीके के मुताबिक, स्क्रोल करने की प्रोसेस इस क्रम में होती है:
- ओवरस्क्रोल: सबसे पहले शुरुआती इनपुट डेल्टा मिलता है. इससे ओवरस्क्रोल को सबसे पहले प्रतिक्रिया करने का मौका मिलता है. उदाहरण के लिए, ऐक्टिव स्ट्रेच इफ़ेक्ट को कम करके.
- नेस्टेड स्क्रोल प्री-स्क्रोल: स्क्रोल चरण से पहले, इनपुट डेल्टा पर प्रतिक्रिया करने का मौका मिलता है. इस चरण में, कुछ इनपुट डेल्टा इस्तेमाल किया जा सकता है या यूज़र इंटरफ़ेस (यूआई) में बदलाव ट्रिगर करने के लिए, इसे सिर्फ़ मॉनिटर किया जा सकता है. जैसे, ऐप्लिकेशन बार को छोटा करना या बड़ा करना.
- इनपुट डेल्टा में बदलाव करना: लेआउट ओरिएंटेशन और दिशा के आधार पर, रॉ इनपुट डेल्टा के साइन को अडजस्ट करता है, ताकि स्क्रोलिंग का व्यवहार नैचुरल हो. ज़्यादा जानकारी के लिए, इनपुट डेल्टा में बदलाव करना सेक्शन देखें.
- स्क्रोल: इस चरण में, स्क्रोलिंग कंटेनर कॉन्फ़िगरेशन के हिसाब से अडजस्ट किया गया, उपलब्ध और इस्तेमाल न किया गया इनपुट डेल्टा मिलता है. आम तौर पर, यह इस डेल्टा का इस्तेमाल करके, अपने स्क्रोल ऑफ़सेट को अपडेट करता है.
- रॉ इनपुट डेल्टा पर वापस जाना: स्क्रोल चरण से उपलब्ध और इस्तेमाल किए गए डेल्टा को, ओरिजनल रॉ इनपुट डेल्टा साइन पर वापस ले जाता है.
- नेस्टेड स्क्रोल पोस्ट-स्क्रोल: यह चरण, मुख्य स्क्रोल चरण पूरा होने के बाद प्रतिक्रिया करता है. इसमें, नए अपडेट किए गए उपलब्ध और इस्तेमाल किए गए डेल्टा मिलते हैं. यह बचे हुए उपलब्ध इनपुट का इस्तेमाल कर सकता है या अभी-अभी इस्तेमाल किए गए कॉन्टेक्स्ट का इस्तेमाल कर सकता है.
- ओवरस्क्रोल: यह आखिरी चरण, उपलब्ध और इस्तेमाल किए गए फ़ाइनल डेल्टा को देखता है. इस चरण तक पहुंचने वाले बचे हुए उपलब्ध इनपुट का इस्तेमाल, आम तौर पर एज इफ़ेक्ट को चलाने के लिए किया जाता है. जैसे, स्ट्रेच या ग्लो. इससे पता चलता है कि उपयोगकर्ता, स्क्रोल किए जा सकने वाले इलाके की सीमा तक पहुंच गया है.
इनपुट डेल्टा में बदलाव करना
पॉइंटर इनपुट डेल्टा के लिए, उम्मीद के मुताबिक कॉन्ट्रैक्ट पाने के लिए, स्क्रोल के चरणों में साइन अडजस्टमेंट की ज़रूरत होती है. डेल्टा के स्क्रोल चरण तक पहुंचने से पहले, स्क्रोल मॉडिफ़ायर, स्क्रीन की दिशा, लेआउट की दिशा, और आरटीएल कॉन्टेक्स्ट के आधार पर, इनपुट डेल्टा को अडजस्ट करते हैं. ऐसा इसलिए होता है, क्योंकि रॉ इनपुट, स्क्रीन पर पॉइंटर के फ़िज़िकल पिक्सल मूवमेंट को ट्रैक करता है. उदाहरण के लिए, नीचे की ओर जाने पर, स्क्रीन का Y-कोऑर्डिनेट बढ़ जाता है. इससे पॉज़िटिव डेल्टा मिलता है. हालांकि, "नैचुरल स्क्रोलिंग" पाने के लिए, जिसमें कॉन्टेंट आपकी उंगली के साथ मूव करता है, नीचे की ओर खींचने का मतलब है कि व्यूपोर्ट को कॉन्टेंट के ऊपर की ओर शिफ़्ट होना चाहिए. यह नेगेटिव स्क्रोल ऑफ़सेट के बराबर होता है.
माउस व्हील या टचपैड जैसे अन्य इनपुट सोर्स से मिलने वाले इनपुट डेल्टा, स्क्रोल के चरणों में नहीं बदले जाते.
उदाहरण: मॉडिफ़ायर.हॉरिज़ॉन्टलस्क्रोल() का इस्तेमाल करके, पॉइंटर दाईं ओर मूव करता है
यह समझने के लिए कि डेल्टा कैसे इस्तेमाल और बदले जाते हैं, दूसरी इमेज देखें. इसमें ऐसे जेस्चर को मैप किया गया है जिसमें पॉइंटर दाईं ओर मूव करता है.
- प्री-स्क्रोल: जेस्चर, 100 के पॉज़िटिव रॉ इनपुट डेल्टा से शुरू होता है.
- ओवरस्क्रोल इसे देखता है और 10 का इस्तेमाल करता है. इससे 90 बचते हैं.
- नेस्टेड स्क्रोल प्री-स्क्रोल से पैरंट कॉम्पोनेंट को प्रतिक्रिया करने का मौका मिलता है. इसमें 30 का इस्तेमाल होता है. बचा हुआ रॉ डेल्टा 60 है.
- ट्रांसफ़ॉर्मेशन A: स्क्रोल चरण में जाने से पहले,
horizontalScrollबचे हुए पॉज़िटिव रॉ डेल्टा (60) को नेगेटिव डेल्टा (-60) में बदल देता है. इससे यह पक्का होता है कि व्यूपोर्ट बाईं ओर शिफ़्ट हो जाए, ताकि कॉन्टेंट उपयोगकर्ता की उंगली के साथ दाईं ओर मूव करता दिखे. - स्क्रोल: टारगेट स्क्रोल किए जा सकने वाला कॉम्पोनेंट, अपने स्क्रोल ऑफ़सेट को अपडेट करने के लिए, इस बदले हुए डेल्टा के एक हिस्से का इस्तेमाल करता है. इस उदाहरण में, यह -30 का इस्तेमाल करता है. इससे -30 का इस्तेमाल नहीं होता.
- ट्रांसफ़ॉर्मेशन B: नेस्टेड स्क्रोल और ओवरस्क्रोल के कॉन्ट्रैक्ट के हिसाब से, इस्तेमाल न किए गए स्क्रोल डेल्टा (-30) को वापस (30) के पॉज़िटिव रॉ डेल्टा में बदल दिया जाता है.
- पोस्ट-स्क्रोल: बचा हुआ रॉ डेल्टा, पाइपलाइन में वापस पास कर दिया जाता है.
- नेस्टेड स्क्रोल पोस्ट-स्क्रोल 10 का इस्तेमाल करता है. इससे 20 बचते हैं.
- ओवरस्क्रोल इफ़ेक्ट, विज़ुअल एज इफ़ेक्ट को चलाने के लिए, फ़ाइनल 20 का इस्तेमाल करता है. जैसे, स्ट्रेच या ग्लो. इससे इनपुट डेल्टा पूरी तरह से 0 हो जाता है.
पॉइंटर इनपुट डेल्टा ट्रांसफ़ॉर्मेशन रेफ़रंस
यहां दी गई टेबल में बताया गया है कि पॉइंटर इनपुट के लिए, अलग-अलग चरणों और दिशाओं में इनपुट डेल्टा के साइन कैसे तय किए जाते हैं.
| रॉ इनपुट डेल्टा | ओवरस्क्रोल इफ़ेक्ट | नेस्टेड स्क्रोल | हॉरिज़ॉन्टल स्क्रीन की दिशा वाला scrollableArea |
scrollableArea हॉरिज़ॉन्टल स्क्रीन की दिशा वाला (रिवर्स किया गया) |
scrollableArea वर्टिकल ओरिएंटेशन वाला |
scrollableArea वर्टिकल ओरिएंटेशन वाला (रिवर्स किया गया) |
|
|---|---|---|---|---|---|---|---|
| पॉइंटर ऊपर की ओर मूव करता है | नेगेटिव | नेगेटिव | नेगेटिव | लागू नहीं | लागू नहीं | पॉज़िटिव | नेगेटिव |
| पॉइंटर नीचे की ओर मूव करता है | पॉज़िटिव | पॉज़िटिव | पॉज़िटिव | लागू नहीं | लागू नहीं | नेगेटिव | पॉज़िटिव |
| पॉइंटर बाईं ओर मूव करता है | नेगेटिव | नेगेटिव | नेगेटिव | पॉज़िटिव (आरटीएल के लिए नेगेटिव) | नेगेटिव (आरटीएल के लिए पॉज़िटिव) | लागू नहीं | लागू नहीं |
| पॉइंटर दाईं ओर मूव करता है | पॉज़िटिव | पॉज़िटिव | पॉज़िटिव | नेगेटिव (आरटीएल के लिए पॉज़िटिव) | पॉज़िटिव (आरटीएल के लिए नेगेटिव) | लागू नहीं | लागू नहीं |