2012-02-12 15 views
5

पर काम नहीं कर रहा है मेरे पास एक दृश्य है जो पूरी तरह से स्क्रीन से बाहर स्थित है और मैं इसे स्क्रीन पर एनिमेट करने की कोशिश कर रहा हूं।ऑफ स्क्रीन से एंड्रॉइड एनिमेट व्यू

जब मैं फोन:

view.startAnimation(tA); 

कुछ नहीं होता, tA.initialize और tA.applyTransformation कभी नहीं कहा जाता है मिलता है।

यदि मैं दृश्य को स्थानांतरित करता हूं ताकि एनीमेशन शुरू करने से पहले इसका कोई भी भाग दिखाई दे, तो एनीमेशन सही तरीके से काम करता है।

माता-पिता को देखने पर एनिमेटेड होने से दृश्य को रोकने से क्या रोक रहा है?

उत्तर

1

यह मेरी समस्या है कि एक ही समस्या का शोध करने से मेरी समझ है कि एंड्रॉइड एनिमेशन अच्छी तरह से नहीं करते हैं जब उनके स्टार्ट या फिनिश के लिए ऑफस्क्रीन निर्देशांक प्रदान किए जाते हैं।

इस बग के बारे में एंड्रॉइड मंचों पर कुछ संवाद दिया गया है लेकिन मुझे अभी भी 4.2 पर समस्याएं आ रही हैं।

संपादित करें:

दूसरी सोचा पर, मैं सिर्फ इस answer भर में भाग गया और अगर आप नए API (ObjectAnimator) का उपयोग कर सकते यह एक काम विकल्प प्रदान करता है।

View view = this; 
ObjectAnimator anim = ObjectAnimator.ofFloat(view, "y", 0, 100); 
anim.setDuration(super.animationDuration()); 
anim.start(); 

कहाँ ObjectAnimator.ofFloat(view, "y", 0, 100); के गुणों

ObjectAnimator.ofFloat(Object objBeingAnimated, String propertyBeingAnimated, float startValue, float endValue) 
0

मैं MarginLayoutParams.topMargin (मेरे मामले में) onAnimationUpdate() है, जो समस्या का समाधान हो में संशोधित करने के लिए ValueAnimator का उपयोग कर this answer पाए जाते हैं। मेरा दृश्य इसके मार्जिन सेट के साथ शुरू होता है ताकि दृश्य स्क्रीन बंद हो।

ObjectAnimator दृष्टिकोण वादा कर रहा था लेकिन मेरे लिए काम नहीं किया था, यह TranslateAnimation के साथ ऑफ-स्क्रीन विचारों के लिए एक ही कटऑफ मुद्दा था।

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