मेरा अनुमान है, NinePatch
ज्यादातर मामलों में थोड़ा तेज होगा। मुझे जो मिला वह यहां है।
GradientDrawable
(एक्सएमएल में rects के लिए इस्तेमाल एक) this code का उपयोग करता Canvas
जो बारी में देशी कॉल SkCanvas
, SkDraw
और अंततः SkScan
और SkBlitter
के लिए अग्रणी का उपयोग करता है के माध्यम से कॉल करने के लिए।
दूसरी ओर, देशी call to NinePatch.cpp
से पहले shortly calls NinePatchImpl.cpp
-- NinePatch_draw()
--- और वह जादू है। कोड को चिह्नित क्षेत्रों में फिर से चलाया जाता है और बाद में कई कॉलों के बाद SkDraw
(drawPath()
के बजाय केवल drawRect()
) में वही तर्क का उपयोग करके सामान खींचता है, लेकिन अंत में यह वही SkScan
और SkBlitter
काम करता है।
यह कोड तुरंत मेरे सिर को लपेटने के लिए बहुत मुश्किल है, लेकिन मेरी आंखों को पकड़ने के लिए यह है कि GradientDrawable
पूरे देशी ढेर में दो कॉल करता है यदि उसके पास पृष्ठभूमि और स्ट्रोक (look here) दोनों हैं, जबकि किसी भी परिदृश्य में NinePatch
केवल एक बनाता है।
तो, वास्तव में दोनों तरीकों के लिए बार को मापने के बिना मैं ज्यादातर मामलों NinePatch
में एक लग रहा है जीतता दौड़ मिलती है: अगर हम [बहुत] मोटे तौर पर मान लेते हैं कि drawRect()
और drawPath()
उपयोग के लिए देशी कॉल के ढेर काफी एक ही तर्क और [एक और भयानक सरलीकरण] पैरामीटर सेट जो आसपास के पारित हो जाते हैं और NinePatch
और GradientDrawable
द्वारा बनाए गए तरीकों की जटिलता को प्रभावित नहीं करते हैं, तो NinePatch
भरने और रूपरेखा के साथ GradientDrawable
से लगभग 2 गुना तेज हो जाता है। खैर, बशर्ते आप एक नियमित, 9-सेक्शन 9-पैच का उपयोग करें (यानी आप 9-पैच को बहुत भयानक मार्करों से नहीं फेंकते हैं, जिससे टुकड़ों पर अत्यधिक प्रयास-महंगे होते हैं)।
कोई भी जो इस पर ठोकर खाएगा और विषय पर अधिक जानता है (और/या देशी कोड की जटिलता का अनुमान लगाने में बेहतर), कृपया, अगर मैं गलत हूं तो मुझे सही करें।
पी एस हाँ, मैं जानता हूँ कि यह एक सीधा जवाब
स्रोत
2013-08-13 09:34:30
मैं जानता हूँ कि dont't के ज्यादा नहीं है! :) लेकिन चूंकि मानक एंड्रॉइड थीम 9पैच का उपयोग करते हैं, इसलिए मुझे लगता है कि ऐसा करना बहुत गलत नहीं हो सकता है। – pumpkee
मुझे लगता है कि अगर मुझे केवल एक रंग की पृष्ठभूमि की आवश्यकता है, तो शायद एक्सएमएल रिसोर्स तेज होगा? कम से कम xml फ़ाइल छोटे आकार – cooperok
होगी यदि आपको केवल एक रंग की आवश्यकता है, इसके साथ पृष्ठभूमि सेट करें। कोई ज़रूरत नहीं है छवि संसाधन, xml config – MengMeng