2012-06-19 19 views
10

मुझे कोई समस्या है। मैं चेतन पृष्ठभूमि रंग एक LinearLayout की, ObjectAnimator का उपयोग कर करना चाहते हैं।
समस्या यह है कि यह एनिमेट करता है, लेकिन यह न तो अवधि की देखभाल करता है और न ही valueFrom और valueToएंड्रॉइड ऑब्जेक्टएनिमीटर एनिमेट पृष्ठभूमि पृष्ठभूमि लेआउट

यह मेरा xml फ़ाइल है:

<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="2000" 
    android:propertyName="backgroundColor" 
    android:repeatCount="infinite" 
    android:repeatMode="reverse" 
    android:valueFrom="#FF0000" 
    android:valueTo="#000000" /> 

जावा में मैं इस तरह कहते हैं:

ObjectAnimator objAnim = (ObjectAnimator)AnimatorInflater.loadAnimator(getActivity(), R.animator.animator_bkg); 
objAnim.setTarget(view); 
objAnim.start(); 

ध्यान दें कि जब मैं लेआउट के अल्फा चेतन, यह काम करता है के रूप में उम्मीद।
क्या यह एक एंड्रॉइड बग है (Asus ट्रांसफार्मर पर 4.0.3), या मुझे कुछ याद आती है?

+0

जब आप रंगों को एनिमेट करने का प्रयास करते हैं तो वास्तव में क्या होता है? – DeeV

+0

एनीमेशन गति बहुत तेज़ है, और ऐसा लगता है कि पृष्ठभूमि सभी संभावित रंगों (जैसे यादृच्छिक रंग) के साथ एनिमेटेड है। मैं नीला, लाल, हरे, पीले, सब कुछ है, और बहुत तेजी से देख :) – XMight

+0

यह "संख्या" 0xFF0000 और 0x000000 के बीच वजह से काम करने में विफल रहता है वहाँ भी अन्य प्राथमिक रंग 0x00FF00 और 0x0000FF, और काफी हर दूसरे रंग के रूप में अच्छी तरह से। अपने डेस्कटॉप कैलक्यूलेटर को प्रोग्रामर/हेक्साडेसिमल पर सेट करें, और आप देखेंगे कि लाल रंग का आधा लाल रंग के बजाय वास्तव में गहरा पीला है। – Combuster

उत्तर

37

मैंने थोड़ी सी गुगल की। एक जवाब है TransitionDrawable का उपयोग करने का प्रयास करें। http://developer.android.com/guide/topics/resources/drawable-resource.html#Transition

इसके अलावा, वहाँ पर stackoverflow.com एक विषय कहीं एक ही समस्या के लिए समर्पित है।

जोड़ा कोड उदाहरण:

Button btn = (Button)this.findViewById(R.id.btn1); 
    //Let's change background's color from blue to red. 
    ColorDrawable[] color = {new ColorDrawable(Color.BLUE), new ColorDrawable(Color.RED)}; 
    TransitionDrawable trans = new TransitionDrawable(color); 
    //This will work also on old devices. The latest API says you have to use setBackground instead. 
    btn.setBackgroundDrawable(trans); 
    trans.startTransition(5000); 
+0

बहुत बहुत धन्यवाद, यह काम करता है! – KinGPinG

+0

धन्यवाद !!!! बस टेक्स्टव्यू पर नए बीजी रंग में एक पॉप करना चाहता था और बदलाव पर काले रंग में फीका था। अन्य सभी एनिमेशन की कोशिश की। TransitionDrawable का एक घोषणात्मक संस्करण भी। यह एक काम किया)) – tom

+0

धन्यवाद! उपयोगी +1 –

12

यह एक पुराना मुद्दा हो रहा है। इसी तरह की समस्या होने पर मैंने इस सवाल पर ठोकर खाई।

अंत में यह एंड्रॉइड में बस एक बग था। कोड काम करना चाहिए, लेकिन एनीमेटर इन्फ्लूटर मूल्यांकनकर्ता को सेट करते समय बस ब्लंडर।

तो फिर मुद्रास्फीति के बाद TypeEvaluator की स्थापना चाल करना होगा। इरादा तरह

ObjectAnimator objAnim = (ObjectAnimator)AnimatorInflater.loadAnimator(getActivity(), R.animator.animator_bkg); 
    objAnim.setTarget(view); 
    objAnim.setEvaluator(new ArgbEvaluator()); 
    objAnim.start(); 

सेट new ArgbEvaluator() को एनीमेशन काम करता है।

+0

इस उत्तर वास्तविक जवाब के रूप में, क्योंकि यह मूल प्रश्न को हल करती है, जबकि user1415536 ​​का जवाब एक का उपयोग करता है चिह्नित किये जाना चाहिए पुरानी वस्तुओं के साथ वैकल्पिक दृष्टिकोण। – ema3272

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