समस्या: मान लीजिए हम साधारण मामला है: हम दृश्य है और हम इस दृश्य पर कुछ डेटा दिखाने के लिए किया है। हम ऐसा करने के लिए स्थिर विधि शोडाटा (दृश्य देखें) का उपयोग करते हैं। जब लेआउट को माप लिया जाता है तो मैं सटीक पल जानना चाहता हूं और मैं getWidth()getHeight() तक पहुंच सकता हूं और यह सुनिश्चित कर सकता हूं कि यह मेरे दृश्य की अंतिम चौड़ाई और ऊंचाई है।addOnLayoutChangeListener बनाम addOnGlobalLayoutListener बनाम पोस्ट (Runnable r)
मुझे क्या पता: (यकीन नहीं मैं सही 100% कर रहा हूँ):
मुझे क्या करना 3 विभिन्न दृष्टिकोणों जानते हैं कि यह
- view.addOnLayoutChangeListener - हम जानते हैं कि लेआउट बदल गया है जब , हम ऊंचाई हो और चौड़ाई
- view.getViewTreeObserver() addOnGlobalLayoutListener कर सकते हैं -। मेरे मामलेके लिए 0 लगभग वही है, लेकिन हमें बाद में जानकारी मिलती है। चूंकि लेआउट चेंज बच्चों से रूट तक बुलबुले, और वैश्विक स्तर से बच्चों से रूट (दाएं?)।
- view.post (Runnable r) - काम कर रहा है, लेकिन मुझे नहीं पता कि क्यों चलने योग्य को मापने के बाद ui थ्रेड निष्पादन में पोस्ट किया गया है।
प्रश्न: सबसे अच्छा तरीका उस दृश्य को पता है मापा जाता है क्या है? और क्यों?
धन्यवाद के बाद चलाएगा :) लेकिन ऑनलाउट चेंज को मूल दृश्य समूह द्वारा भी बुलाया जाता है, तो OnGlobalLayoutListener बेहतर choise क्यों है? मैं View.post() के बारे में भी सोच रहा हूं। तो अगर मैंने विधि शोडाटा (व्यू व्यू) पर कॉल किया है और अगली पंक्ति view.post (Runnable r) है तो देखने के बाद रननेबल निष्पादित किया जाएगा और सटीक लेआउट है? मेरा मतलब है view.post (आर) शोडाटा (देखें वी) और मेजर के बीच नहीं हो सकता है? – comte1986
जब आप किसी बच्चे को View.Gone पर कॉल करते हैं तो ViewGroupGlobalLayoutListener पर ट्रिगर करेगा जो ऑनलेआउट एक्सचेंज को कॉल कर सकता है, जब सीमाएं बदलती हैं, वैश्विक स्तर पर परिवार की स्थिति होती है, अगर कोई व्यक्ति को सूचित करता है, तो जब आप वस्तु एनिमेटर को एनिमेट करने के लिए उपयोग करते हैं यह दृश्य ट्रिगर किया जाएगा, केवल एक उदाहरण है, इसलिए यदि आप वास्तव में निगरानी करना चाहते हैं तो आपको इसका उपयोग करने की आवश्यकता होगी, और उन्हें अक्सर नहीं कहा जाता है, देखें।पोस्ट() जैसा मैंने कहा था, इसलिए यह मामला हो सकता है कि यह हमेशा प्रारंभिक परिभाषित कॉल के पीछे गिर जाएगा, @ comte1986 उम्मीद है कि इससे मदद मिलती है – Elltz