2012-05-17 10 views
5

मुझे एक ऐप मिला है जो उपयोगकर्ताओं को पूर्वनिर्धारित नियंत्रणों के सेट से जटिल स्क्रीन लेआउट बनाने की अनुमति देता है। फिर वे नियंत्रण अंतिम कार्यक्षमता उत्पन्न करने के लिए एक-दूसरे से बात करते हैं। जो समस्या मैं देख रहा हूं वह यह है कि इससे कोई फर्क नहीं पड़ता कि ऐसा लगता है कि एक नियंत्रण में बदलाव के कारण कोई भी पुनरावृत्ति पूरे स्क्रीन को फिर से निकालने के लिए मजबूर कर रही है (जैसा कि "स्क्रीन दिखाएं" सक्षम करने के द्वारा देखा गया है)। क्योंकि मेरे पास उनके पीछे बहुत अधिक एक्सएमएल के बिना बहुत से कस्टम नियंत्रण हैं, यह पुनरावृत्ति बहुत धीमी हो सकती है।जब भी कुछ बदलता है तो संपूर्ण स्क्रीन को फिर से निकालने से एंड्रॉइड को कैसे रोकें?

उदाहरण के लिए, एक नियंत्रण कैलकुलेटर हो सकता है जो कुछ रैखिक लेआउट से बनाया गया है। एक और गतिशील लेआउट से गतिशील रूप से जेनरेट कमांड ग्रिड निर्माण हो सकता है। स्क्रीन लोड होने पर इनमें से प्रत्येक को माता-पिता रिश्तेदार लेआउट में जोड़ा जाता है। कैलक्यूलेटर पर एक कुंजी दबाकर कमांड ग्रिड को फिर से निकालने के लिए मजबूर करता है, भले ही इसके किसी भी विचार में कुछ भी नहीं बदला है।

मैंने हार्डवेयर त्वरण को चालू करने और किसी भी भाग्य के साथ सभी दृश्यों के परत प्रकारों को LAYER_TYPE_HARDWARE में बदलने का प्रयास किया है।

मैं कैसे सुनिश्चित करूं कि स्क्रीन का केवल एक विशिष्ट उपखंड फिर से खींचा जाए? इस बिंदु पर मैं खुद को अमान्य करने के लिए कोई भी कॉल नहीं कर रहा हूं, लेकिन मेरे पास बटन, लेआउट और अन्य यूआई घटकों के अपने स्वयं के थीम योग्य संस्करण हैं, इसलिए यदि मुझे कम से कम एक ढांचा पहले से ही उस स्तर के नियंत्रण में जाना है इसके लिए जगह में

उत्तर

0

इस लग रहा है काफी इस तरह .. Moving Android View and preventing onDraw to be called over and over again लेकिन अगर आप सिर्फ एक वर्ग को आकर्षित करना चाहते हैं, जहां रेक्ट एक Rect है कि आप एक क्षेत्र है कि हो जाएगा "दोबारा बनाई", कि afaik आप के अलावा अन्य को परिभाषित है invalidate(rect) बुला की कोशिश नहीं कर सकता।

+0

काफी नहीं, शायद मैं इसे अच्छी तरह से समझा नहीं रहा हूं। मुझे स्क्रीन पर एक बटन मिला है। जब मैं उस बटन को दबाता हूं तो यह उसके दबाए गए राज्य में बदल जाता है। यह, ज़ाहिर है, बटन को फिर से खींचा जाना चाहिए। लेकिन जो मैं देख रहा हूं वह यह है कि पूरी स्क्रीन को केवल बटन के साथ ही नहीं किया जाता है। मैं खुद को अमान्य नहीं कह रहा हूं, बस अंतर्निहित एंड्रॉइड विजेट को अपनी बात करने दें। यह संभव होना चाहिए। मैंने शो स्क्रीन चेंज सक्षम डिवाइस पर अन्य ऐप्स के साथ खेला है और उनमें से कुछ केवल स्क्रीन के कुछ हिस्सों को फिर से खींचा जा सकता है जबकि अन्य इसे सब कुछ फिर से लेते हैं। जब भी मैं संवाद या टोस्ट का उपयोग करता हूं तब भी मेरा ऐप सीमित हो जाता है। –

+0

I _do_ में बटन, लेआउट इत्यादि के कुछ कस्टम संस्करण हैं लेकिन वे बहुत ही सरल हैं और मैं ड्रॉ चक्र से निपटने वाले किसी भी फ़ंक्शन को ओवरराइड नहीं कर रहा हूं। –

संबंधित मुद्दे