2011-09-07 9 views
6

के प्रदर्शन में सुधार करने के लिए कैसे मैं इंटरैक्टिव पुस्तक के कुछ प्रकार बनाने के लिए एक ViewAnimator (की मूल वर्ग ViewFlipper) का उपयोग कर रहा हूँ। पदानुक्रम इस तरह मोटे तौर पर है:ViewFlipper/ViewAnimator

<ViewAnimator> 
    <include layout="@layout/p0" /> 
    <include layout="@layout/p1" /> 
    <include layout="@layout/p2" /> 
    ... 
</ViewAnimator> 

तो किताब के पन्नों ViewAnimator के अंदर हैं। प्रत्येक पृष्ठ में एनिमेटेड छवि दृश्य, टेक्स्ट व्यू, बटन ... की कई परतों के साथ फ़्रेमलाइट होता है जो बहुत अधिक हो जाता है। ViewAnimator.showNext() के माध्यम से पुस्तक का एक नया पृष्ठ प्रदर्शित करना सेकंड ले सकता है। उस समय ImageView.onDraw() -Traceview में खर्च किया जाता है।

- कोई लेआउट व्यूएनिमीटर (व्यूपेजर, व्यू ग्रुप के अन्य कार्यान्वयन ...) में कुछ भी सुधार होगा?

- क्या पर कोई तरीका है व्यूफ्लिपर/व्यूएनिमीटर/अन्य अगला दिखाएगा? (ताकि पुस्तक का अगला पृष्ठ हमेशा मेमोरी में तैयार और खुश हो)

- क्या मैं कैनवास या GLSurfaceView का उपयोग कर सकता हूं? (एनीमेशन फ्रेमवर्क का उपयोग नहीं कर सकते)

मैं अटक गया हूं ... क्या आप मदद कर सकते हैं?

+0

मैं विंडोज फोन में पैनोरमा कंट्रोल के व्यवहार की नकल करने के लिए व्यूफ्लिपर का उपयोग करने की कोशिश कर रहा हूं और एक ही समस्या है (धीमी गति फ़्लिपिंग)। ViewFlipper दृश्य स्विचिंग को कैसे सुधारें? – anonim

उत्तर

3

मैं आपके सभी सवालों का जवाब नहीं दे सकता, लेकिन मैं आपको बता दूंगा क्योंकि यह अन्य उत्तरों की कमी से बेहतर है। : पी

व्यूपेजर्स डिफ़ॉल्ट रूप से दोनों तरफ विचारों को लोड करते हैं। यह स्विच को गति देता है, लेकिन वर्तमान में खुला दृश्य को धीमा कर सकता है। व्यूपेजर पर प्रीलोड किए गए दृश्यों की संख्या को इसके तरीकों में से एक का उपयोग करके सेट किया जा सकता है।

यदि आप व्यूपेजर नहीं चाहते हैं, तो आप वास्तव में उन विचारों को तुरंत चालू करने का प्रयास कर सकते हैं जिन्हें आप पहले से लोड करना चाहते हैं, और बस उन्हें अदृश्य में सेट करना।

मुझे नक्शा ओवरले के अलावा कैनवास या जीएल के साथ अनुभव नहीं हुआ है, लेकिन मुझे उम्मीद है कि यदि आप कोई अनियंत्रित कार्यक्षमता नहीं रखते हैं तो वे ठीक से लागू/प्रतिक्रियाशील/कुशल हो सकते हैं। हालांकि, आपकी सामग्री के स्रोत के आधार पर गन्दा हो सकता है।

सिफारिश: ViewPager आज़माएं, यह आपके जैसे कार्यान्वयन के लिए बनाया गया है। यदि आप इससे असंतुष्ट हैं, तो अपनी आस्तीन को रोल करें और कैनवास सामग्री में चेक करें।

4

सुधार करने के लिए ViewFlipper के प्रदर्शन, आप

एंड्रॉयड सेट कर सकते हैं: measureAllChildren = "false"

एक्सएमएल में। यह आमतौर पर फ्रेमलेआउट के लिए गलत पर सेट होता है, लेकिन ViewAnimator इसे किसी कारण से डिफ़ॉल्ट रूप से सक्षम बनाता है।

इसे गलत करने के लिए सेट करना मेरे लिए एक बहुत ही अजीब अंतराल समस्या हल हो गया।

+0

... बहुत सच है। आंख खोलने के लिए धन्यवाद –

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

  • कोई संबंधित समस्या नहीं^_^