पहली बार Android योगदान के लिए उदाहरणों पर शोध करते समय, कोटलिन में लिखे गए एनिमेशन के लिए कुछ उदाहरण मौजूद थे। देशी एनिमेशन के भीतर अभिगम्यता संबंधी विचारों के कुछ कोड उदाहरण भी थे।
तो अब हम शुरू करें! आइए कोटलिन में एक देशी 'विस्तार' एनीमेशन लिखने पर ध्यान दें, और बात करें कि टॉकबैक या बढ़े हुए टेक्स्ट वाले लोगों की सहायता कैसे करें। इसमें सभी कोड उपलब्ध हैं उदाहरण रेपो , इसके भीतर एक एनिमेटेड दृश्य के साथ एकल गतिविधि बनाना। यह जिस कोड पर आधारित है, वह किसके साथ सह-लिखा गया था कैलम टर्नर .
Android एक्सेसिबिलिटी (a11y)
सभी Android डिवाइस में टॉकबैक नाम का एक अंतर्निहित स्क्रीन रीडर होता है। इसे डिवाइस की सेटिंग से चालू किया जा सकता है, और इसमें पहली बार उपयोग गाइड भी शामिल है। जेस्चर का उपयोग पृष्ठ के चारों ओर नेविगेट करने के लिए किया जाता है, जिसमें फ़ोकस किए गए तत्वों के विवरण को ज़ोर से पढ़ा जाता है। इसके बिना, कई दृष्टिबाधित उपयोगकर्ताओं के लिए एक ऐप अनुपयोगी हो जाता है।
महत्वपूर्ण महत्व यह है कि सही तत्व फोकस करने योग्य हैं, विवरण हैं, और दृश्य में परिवर्तन की घोषणा की गई है।
उसी सेटिंग मेनू के भीतर डिफ़ॉल्ट आधार फ़ॉन्ट आकार को 1.0 से स्केलिंग, समायोजित किया जा सकता है। दृश्य को फ़ॉन्ट आकार में इस परिवर्तन पर प्रतिक्रिया देनी चाहिए, सभी तत्व अभी भी मौजूद हैं और कार्य कर रहे हैं।
ख़ाका
हम यहां लेआउट की स्टाइलिंग बारीकियों को नहीं देखेंगे क्योंकि वे इस उदाहरण के लिए काफी अद्वितीय हैं, लेकिन एक्सेसिबिलिटी टच हाइलाइट करने लायक हैं।
दो गुणों का उपयोग किया जाता है: |_+_| और |_+_|.
|_+_| जब कोई तत्व फोकस करता है तो उसे पढ़ा जाता है। किसी भी इमेज व्यू के लिए जो फोकस हासिल करता है, यह आवश्यक है, अन्यथा एक स्क्रीन रीडर इसके बजाय उपयोगकर्ता को बेकार 'बिना लेबल वाला' पढ़ेगा।
यदि यह एक बटन होता तो यह डिफ़ॉल्ट रूप से 'बटन, सक्रिय करने के लिए डबल टैप' पढ़ता, लेकिन हमारे ImageView आइकन के लिए हम मैन्युअल रूप से कार्रवाई निर्दिष्ट करते हैं क्योंकि हमारे पास यह डिफ़ॉल्ट नहीं है।
android:contentDescription
हम |_+_| . का भी उपयोग करते हैं '+' टेक्स्ट व्यू के लिए फोकस बंद करने के लिए, क्योंकि दो बैज के नीचे टेक्स्ट एक विवरण प्रदान करता है और इसलिए '+' जोर से पढ़ने पर मददगार से ज्यादा भ्रमित करने वाला होता है।
file_put_contents स्ट्रीम अनुमति को खोलने में विफल रहा अस्वीकृत
इन दोनों के लिए, टॉकबैक चालू होने के साथ वास्तविक डिवाइस पर मैन्युअल परीक्षण इस बात का सबसे अच्छा संकेत है कि क्या दृश्य के बिना संदर्भ समझ में आता है।
एनिमेशन का विस्तार करें
हमारा एनिमेशन एक 'जानकारी' आइकन टैप पर सक्रिय होगा, जो विवरण अनुभाग के विस्तार को चालू करेगा।
एनीमेशन कोड पर ध्यान केंद्रित करने की अनुमति देने के लिए हम यह सब एक ही गतिविधि के अंदर करेंगे। एक वास्तविक दुनिया ऐप में, जिस दृश्य पर इसे लागू किया जाता है, वह अपने स्वयं के टुकड़े या पुनरावर्तक दृश्य के भीतर होने की अधिक संभावना है, इसलिए एक अधिक सारगर्भित कोड संरचना का उपयोग किया जाएगा।
श्रोता सेट करना
हमारे उदाहरण गतिविधि के भीतर |_+_| हमें पहले अपने आइकन पर एक श्रोता सेट करना होगा और उस दृश्य में गुजरना होगा जिसे टॉगल किया जाना है।
android:importantForAccessibility
यदि दृश्य टॉगल किया गया है, तो इसे शुरू में बंद करने के लिए सेट करने के लिए हमने कक्षा के भीतर एक चर भी सेट किया है।
अजगर स्ट्रिंग से विशिष्ट चरित्र को हटा दें
contentDescription
ऐनिमेशन का विस्तार करें टॉगल करें
हमारे लेआउट के भीतर, हमने |_+_| . की ऊंचाई निर्धारित की है से |_+_|.
इस ओपन को टॉगल करने के लिए हमें इसे सेट करने के लिए नई ऊंचाई जानने की जरूरत है, एनीमेशन कितना लंबा होना चाहिए, और एनीमेशन के प्रत्येक पल में यह कितनी ऊंचाई होनी चाहिए।
फिर हमें |_+_| . सेट करने की आवश्यकता है इसके विपरीत, और सुनिश्चित करें कि जब दोबारा टैप किया जाता है तो यह विपरीत होता है।
importantForAccessibility:no
}
चूंकि जब दृश्य शुरू में खींचा जाता है तो ऊंचाई 0 होती है, हमें इसके लेआउट को फिर से मापकर इसके नए आकार की गणना करनी चाहिए।
जैसा कि में वर्णित है एंड्रॉइड व्यू लेआउट डॉक्स , हम उपयोग कर सकते हैं |_+_| प्रत्येक बार सूचना आइकन टैप किए जाने पर पुनः मापने के लिए हमने दृश्य को असाइन किए गए लेआउट पैरामीटर के साथ।
अधिकतम ऊंचाई की गणना करने के लिए हमें इसमें ऊपर और नीचे पैडिंग को मैन्युअल रूप से जोड़ना होगा, क्योंकि ये मापी गई ऊंचाई में शामिल नहीं हैं।
|_+_| . के आधार पर हम तब जानते हैं कि क्या हम 0 से शुरू कर रहे हैं या विस्तारित अधिकतम ऊंचाई से शुरू कर रहे हैं, और इसलिए विरोधी लक्ष्य ऊंचाई।
हम प्रारंभिक मूल्य से लक्ष्य अंत मूल्य तक जाने के लिए एक वैल्यू एनिमेटर का उपयोग करते हैं, और अवधि को एमएस में सेट करते हैं। यह अवधि विशुद्ध रूप से UX फील के लिए बाद में मैन्युअल परीक्षण पर आधारित है।
onCreate
हम अपडेट श्रोता के साथ अवधि को ऊंचाई से जोड़ते हैं, प्रत्येक अपडेट के बाद एक नया लेआउट तैयार करने का अनुरोध करते हैं और हर बार ऊंचाई समायोजित करते हैं।
personEntryBody
जैसा कि हम कोटलिन का उपयोग कर रहे हैं, हम अपने में |_+_|लाइब्रेरी भी जोड़ते हैं |_+_| इसका लाभ लेने के लिए |_+_| विस्तार। यह हमें बहुत आसानी से |_+_| . को उलटने की अनुमति देता है चर।
अंत में हम अपना एनीमेशन शुरू करते हैं! पहले से ही हमारे पास एक शरीर है जो एक आइकन स्पर्श पर फैलता और सिकुड़ता है!
चिकना एनिमेशन
जबकि हमारा एनीमेशन तकनीकी रूप से वैसे ही काम करता है, एक अच्छा अतिरिक्त कदम एक . जोड़ना है क्षेपक करनेवाला ताकि आंदोलन अधिक स्वाभाविक लगे।
0dp
हमारी पहुंच में वृद्धि
उम्मीद है कि हमारे a11y उपयोगकर्ताओं की मदद करने के लिए हम दो अंतिम चीज़ें जोड़ेंगे।
सबसे पहले हम एक |_+_| . का उपयोग करके नेविगेशन में मदद कर सकते हैं .
isToggled
इसका मतलब यह है कि जब एनीमेशन बंद से खुले में चलता है, तो फोकस तुरंत शरीर के पहले आइटम पर फोकस पर पहुंच जाएगा, इस मामले में विवरण। लेआउट में, हम जानकारी आइकन कार्रवाई का विवरण सेट करते हैं, लेकिन जैसा कि हम उपयोगकर्ता के लिए अगले आइटम पर जाने के लिए एक दृश्य संकेतक पर भरोसा करने में सक्षम नहीं हो सकते हैं, हम उनके लिए इसे संभाल सकते हैं।
दूसरा हम विभिन्न फ़ॉन्ट आकारों की अनुमति देते हैं। मापी गई ऊंचाई |_+_| . से लौटाई गई डिवाइस एक्सेसिबिलिटी सेटिंग्स में सेट किए गए फ़ॉन्ट स्केलिंग के लिए जिम्मेदार नहीं है, और इसलिए जब बड़े पैमाने पर विवरण के निचले हिस्से को क्रॉप किया जाएगा क्योंकि यह फिट होने के लिए बहुत बड़ा है।
हम फॉन्ट स्केल को प्रोग्रामेटिक रूप से एक्सेस कर सकते हैं, और इसके आधार पर अपनी ऊंचाई को माप सकते हैं। हम इसे एक पूर्णांक में बदलते हैं क्योंकि फ़ॉन्ट स्केल के परिणामस्वरूप एक फ्लोट हो सकता है जो लेआउट ऊंचाई के रूप में काम नहीं करेगा।
**val** expandAnimator = ValueAnimator .ofInt(startHeight, targetHeight) .setDuration(200) expandAnimator.addUpdateListener **{ val** value = **it**._animatedValue_ **as** Int body._layoutParams_.**height** = value body.requestLayout() **}** expandAnimator._doOnEnd_ **{ ** isToggled = !isToggled **}** expandAnimator.start()
ख़त्म होना!
सीबॉर्न हीटमैप फ़ॉन्ट आकार
और वहां हमारे पास है, हम अपने अंतिम एनीमेशन पर आ गए हैं! बस कुछ अतिरिक्त लाइनों के साथ हमने इसकी a11y कवरेज को बहुत बढ़ा दिया है और एक कोटलिन और एंड्रॉइड बैज को प्रकट करने वाला एक सहज विस्तार अनुभाग है
पढ़ने के लिए धन्यवाद
मूल रूप से डोमिनिक फ्रेजर द्वारा प्रकाशित https://medium.freecodecamp.org
और अधिक जानें
मैं पूरा एंड्रॉइड कोटलिन डेवलपर कोर्स
मैं Android के लिए कोटलिन: शुरुआत से उन्नत तक
मैं शुरुआती के लिए कोटलिन: कोटलिन के साथ प्रोग्रामिंग सीखें
मैं Android Oreo का उपयोग करके Android Kotlin Development Masterclass
मैं एंड्रॉइड और जावा डेवलपर्स के लिए कोटलिन: एंड्रॉइड पर क्लीन कोड
मैं कोटलिन एंड्रॉइड डेवलपमेंट मास्टरक्लास - एंड्रॉइड ओरेओ के साथ
#कोटलिन #एंड्रॉइड #मोबाइल-ऐप्स
मीडियम.फ्रीकोडकैंप.ओआरजी
अपने कोटलिन एंड्रॉइड एनिमेशन को कैसे सुलभ बनाएं
पहली बार Android योगदान के लिए उदाहरणों पर शोध करते समय, कोटलिन में लिखे गए एनिमेशन के लिए कुछ उदाहरण मौजूद थे। देशी एनिमेशन के भीतर अभिगम्यता संबंधी विचारों के कुछ कोड उदाहरण भी थे।
पायथन 3.9 नई विशेषताएं
यह सभी देखें:
- कीव: मल्टीपल बैकएंड्स के लिए सपोर्ट के साथ सिंपल की-वैल्यू स्टोरेज
- यूएसबी पोर्ट काम नहीं कर रहे? इसे ठीक करने का तरीका यहां बताया गया है
- सुपरफार्म (सुपर) क्या है | सुपरफार्म टोकन क्या है | सुपर टोकन क्या है
- उदाहरण के साथ TensorFlow चर और प्लेसहोल्डर ट्यूटोरियल
- डेबियन 10 . पर npm के साथ Node.js कैसे स्थापित करें