2013-02-12 21 views
20

तो आईडी एक ही समय में एक मुट्ठी भर विचारों को घूमना पसंद करता है, सभी एक ही रोटेशन चश्मे का उपयोग करते हैं। मुद्दा यह है कि किसी कारण से घूर्णन दूसरे तत्व के लिए अलग-अलग कार्य करता है। स्पष्ट रूप से यह कोड की उन दो पंक्तियों के बीच वास्तव में बदलती स्थिति एनीमेशन ऑब्जेक्ट के साथ करना है। जाहिर है मैं तो बस एक अलग एनीमेशन वस्तु बनाने और इसे लागू हो सकते हैं, लेकिन मुझे लगता है कि एक आसान तरीका (मैं के बारे में 15 बार देखा गया है)एक ही समय में एक ही एनीमेशन को एकाधिक दृश्यों पर लागू करें

Rotates केवल पहली बार देखने को सही ढंग से मौजूद है:

Animation rotateAnim = AnimationUtils.loadAnimation(this, R.anim.rotationtoportrait); 
target.startAnimation(rotateAnim); 
lightBtn.startAnimation(rotateAnim); 

दोनों सही ढंग से घुमाता

Animation rotateAnim = AnimationUtils.loadAnimation(this, R.anim.rotationtoportrait); 
Animation rotateAnim2 = AnimationUtils.loadAnimation(this, R.anim.rotationtoportrait); 
target.startAnimation(rotateAnim); 
lightBtn.startAnimation(rotateAnim2); 

एक्सएमएल:

<?xml version="1.0" encoding="utf-8"?> 
<rotate 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromDegrees="-90" 
    android:toDegrees="0" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:duration="500" android:fillAfter="true"> 

एक नायोन के पास कोई विचार है?

+1

प्रयास करें। इसके अलावा मैं इसे देखने की सलाह देता हूं: http://www.youtube.com/watch?v=_UWXqFBF86U – Leandros

+0

वीडियो से प्यार करें! लेकिन क्या नया एपीआई, जहां तक ​​मैं यह कह सकता हूं कि वीडियो में लड़के ने क्या किया? (कम से कम अंत में) – Jameo

+1

गलत वीडियो, क्षमा करें। ;) http://www.youtube.com/watch?v=3UbJhmkeSig – Leandros

उत्तर

5

तो मुझे लगता है कि यह संभव नहीं है, तो मैं एक सहायक विधि बनाया सिर्फ विचारों की एक सूची के लिए एक ही एनीमेशन लागू करने के लिए:

public void doRotations(ArrayList<View> views, int start, int end, int xprop, float xscale, int yprop, float yscale, int duration, Boolean fillAfter){ 

    for(int i = 0; i < views.size(); i++){ 
     RotateAnimation temp = new RotateAnimation(start, end, xprop, xscale, yprop, yscale); 
     temp.setDuration(duration); 
     temp.setFillAfter(fillAfter); 
     views.get(i).startAnimation(temp); 
    } 
} 

हैक निश्चित रूप से, लेकिन मैं thats सब मैं अनुमान मीटर अभी ऐसा करने में सक्षम

+0

यह वास्तव में समानांतर में एनीमेशन चलाता है, लेकिन यदि आप बारीकी से देखते हैं तो आप एनीमेशन को थोड़ा सा देरी देख सकते हैं (क्योंकि आप एनिमेशन के बाद एनिमेशन को ट्रिगर कर रहे हैं)। – Mercury

7

इसे इस तरह न करें: (पीछे की ओर संगतता उपयोग NineOldAndroids के लिए) नई एनीमेशन एपीआई का उपयोग करने

ObjectAnimator anim = ObjectAnimator.ofFloat(view, "y", 100f); 
arrayListObjectAnimators.add(anim); 

ObjectAnimator anim1 = ObjectAnimator.ofFloat(view, "x", 0f); 
arrayListObjectAnimators.add(anim1); 

ObjectAnimator[] objectAnimators = arrayListObjectAnimators.toArray(new ObjectAnimator[arrayListObjectAnimators.size()]); 
AnimatorSet animSetXY = new AnimatorSet(); 
animSetXY.playTogether(objectAnimators); 
animSetXY.duration(1000); 
animSetXY.start(); 
+3

यह सवाल का जवाब नहीं देता है, अगर मैं सही हूं तो आप एक ही दृश्य में 2 एनिमेशन लागू कर रहे हैं। मूल पोस्ट एक ही एनीमेशन को 2 विचारों पर लागू करना चाहता है –

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