2010-11-30 14 views
5

मैं कुछ आसान करने की कोशिश कर रहा हूं, लेकिन मुझे समझ में नहीं आता कि यह क्यों काम नहीं कर रहा है।
मैं जो करने की कोशिश कर रहा हूं वह है: जब मैं एक छवि दृश्य को स्पर्श करता हूं, तो यह उस पर एक एनीमेशन दिखाएगा। और फिर, केवल जब वह एनीमेशन समाप्त होता है तो यह नई गतिविधि शुरू करेगा।
इसके बजाए, क्या होता है कि नई गतिविधि तुरंत शुरू होती है और एनीमेशन दिखाई नहीं देता है।एनीमेशन गतिविधि परिवर्तन से पहले

यहाँ एनीमेशन एक्सएमएल है:

<rotate android:interpolator="@android:anim/decelerate_interpolator" 
    android:fromDegrees="-45" 
    android:toDegrees="-10" 
    android:pivotX="90%" 
    android:pivotY="10%" 
    android:repeatCount="3" 
    android:fillAfter="false" 
    android:duration="10000" /> 

और यह कोड मैं इसे कहते हैं का उपयोग करें:

public void onCreate(Bundle savedInstanceState) 
{ 
    final ImageView ib = (ImageView)this.findViewById(R.id.photo); 
    ib.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) 
     { 
      Animation hang_fall = AnimationUtils.loadAnimation(Curriculum.this, R.anim.hang_fall); 
      v.startAnimation(hang_fall); 
      Intent i = new Intent(ThisActivity.this, NextActivity.class); 
      ThisActivity.this.startActivity(i); 
     }// end onClick 
    }); 
}// end onCreate 

जैसा कि आप देख मैं एनीमेशन के लिए एक बहुत अधिक समय लगा डालने की कोशिश की है, लेकिन यह काम नहीं करता नेक्स्टएक्टिविटी तुरंत शुरू होता है, यह एक्टिविटी में खत्म होने के लिए एनीमेशन की प्रतीक्षा नहीं करता है।
ऐसा क्यों होता है यह क्यों होता है?

उत्तर

4

है ऐसा इसलिए है क्योंकि आप इरादे और एक ही समय में एनीमेशन शुरू कर रहे हैं में दिया गया है। एनीमेशन समाप्त होने के बाद आपको इरादा शुरू करने की आवश्यकता है, इस तरह:

@Override 
public void onClick(View v) 
{ 
    Animation hang_fall = AnimationUtils.loadAnimation(Curriculum.this, R.anim.hang_fall); 
    hang_fall.setAnimationListener(new Animation.AnimationListener() 
     { 
      public void onAnimationEnd(Animation animation) 
      { 
       Intent i = new Intent(ThisActivity.this, NextActivity.class); 
       ThisActivity.this.startActivity(i); 
      } 

      public void onAnimationRepeat(Animation animation) 
      { 
       // Do nothing! 
      } 

      public void onAnimationStart(Animation animation) 
      { 
       // Do nothing! 
      } 
     }); 
    v.startAnimation(hang_fall); 
}// end onClick 
+0

एक इलाज के रूप में काम किया, धन्यवाद! मेरी इच्छा है कि इनमें से कुछ मामलों पर थोड़ा और दस्तावेज था। :) – Stephan

+0

http://developer.android.com/reference/packages.html सबसे अच्छा संदर्भ है। बस उन वर्गों की खोज करें जिन्हें आप जानना चाहते हैं कि कैसे उपयोग करें। – CaseyB

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