2011-12-20 12 views
9

To jest moja pierwsza aplikacja i muszę rozpocząć nową aktywność po zakończeniu animacji. co muszę zrobić? Mój kod:Jak rozpocząć aktywność na końcu animacji

package com.lineage.goddess; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.WindowManager; 
import android.view.animation.Animation; 
import android.view.animation.AnimationUtils; 
import android.widget.TextView; 

public class LineageSplashActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.splash); 
     startAnimation(); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 

    } 

    private void startAnimation() { 
     // TODO Auto-generated method stub 
     TextView logo1= (TextView) findViewById(R.id.TextView1); 
     Animation fade1= AnimationUtils.loadAnimation(this, R.anim.fade_in); 
     logo1.startAnimation(fade1); 
     TextView logo2= (TextView) findViewById(R.id.TextView2); 
     Animation fade2= AnimationUtils.loadAnimation(this, R.anim.fade_in); 
     logo2.startAnimation(fade2); 
     TextView logo3= (TextView) findViewById(R.id.TextView3); 
     Animation fade3= AnimationUtils.loadAnimation(this, R.anim.fade_in); 
     logo3.startAnimation(fade3); 
     TextView logo4= (TextView) findViewById(R.id.TextView4); 
     Animation fade4= AnimationUtils.loadAnimation(this, R.anim.fade_in2); 
     logo4.startAnimation(fade4);} 
     public void onAnimationEnd() { 
      Intent i = new Intent(LineageSplashActivity.this, LineageMenuActivity.class); 
      LineageSplashActivity.this.startActivity(i); 
; 
     } 
    } 

Odpowiedz

17

Ustaw animationListener na animację, której chcesz użyć do rozpoczęcia aktywności.

myAnimation.setAnimationListener(new AnimationListener() { 
    public void onAnimationStart(Animation animation) {} 
    public void onAnimationRepeat(Animation animation) {} 
    public void onAnimationEnd(Animation animation) { 
     Intent i = new Intent(LineageSplashActivity.this, LineageMenuActivity.class); 
     LineageSplashActivity.this.startActivity(i); 
    } 
} 

Tak Twój kod będzie tak:

package com.lineage.goddess; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.WindowManager; 
import android.view.animation.Animation; 
import android.view.animation.AnimationUtils; 
import android.widget.TextView; 

public class LineageSplashActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.splash); 
     startAnimation(); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 

    } 

    private void startAnimation() { 
     // TODO Auto-generated method stub 
     TextView logo1= (TextView) findViewById(R.id.TextView1); 
     Animation fade1= AnimationUtils.loadAnimation(this, R.anim.fade_in); 
     logo1.startAnimation(fade1); 
     TextView logo2= (TextView) findViewById(R.id.TextView2); 
     Animation fade2= AnimationUtils.loadAnimation(this, R.anim.fade_in); 
     logo2.startAnimation(fade2); 
     TextView logo3= (TextView) findViewById(R.id.TextView3); 
     Animation fade3= AnimationUtils.loadAnimation(this, R.anim.fade_in); 
     logo3.startAnimation(fade3); 
     TextView logo4= (TextView) findViewById(R.id.TextView4); 
     Animation fade4= AnimationUtils.loadAnimation(this, R.anim.fade_in2); 
     face4.setAnimationListener(new AnimationListener() { 
      public void onAnimationStart(Animation animation) {} 
      public void onAnimationRepeat(Animation animation) {} 
      public void onAnimationEnd(Animation animation) { 
       Intent i = new Intent(LineageSplashActivity.this, LineageMenuActivity.class); 
       LineageSplashActivity.this.startActivity(i); 
      } 
     }  

     logo4.startAnimation(fade4);  
    } 
} 
+0

proszę podać mi pełny kod ... kiedy pase go po TextView logo4 = (TextView) findViewById (R.id.TextView4); Animacja fade4 = AnimationUtils.loadAnimation (this, R.anim.fade_in2); logo4.startAnimation (fade4);} Mam: myAnimation nie może zostać rozwiązany, a AnimationListener nie może zostać rozwiązany na typ – user1108339

+0

Powinieneś był wypróbować to sam w mojej opinii. W każdym razie kod jest zamieszczony w mojej odpowiedzi. – Jordi

+0

thx. jest dla mnie trudne: | – user1108339

4

Kod wykonane krwawienie moje oko, więc naprawiłem go tak dużo, jak tylko mogłem:

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.WindowManager; 
import android.view.animation.Animation; 
import android.view.animation.Animation.AnimationListener; 
import android.view.animation.AnimationUtils; 

public class LineageSplashActivity extends Activity implements AnimationListener { 

    private static final int NUMBER_OF_ANIMATIONS = 4; 
    private int animationFinishedCount = 0; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.splash); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 

     startAnimations(); 
    } 

    private void startAnimations() { 
     Animation fade = AnimationUtils.loadAnimation(this, R.anim.fade_in); 
     fade.setAnimationListener(this);  

     findViewById(R.id.TextView1).startAnimation(fade); 
     findViewById(R.id.TextView2).startAnimation(fade); 
     findViewById(R.id.TextView3).startAnimation(fade); 
     findViewById(R.id.TextView4).startAnimation(fade); 
    } 


    @Override 
    public void onAnimationEnd(Animation animation) { 
      // When all animations have finished - start the next activity 
     if(++animationFinishedCount == NUMBER_OF_ANIMATIONS){ 
      Intent intent = new Intent(this, LineageMenuActivity.class); 
      startActivity(intent); 
     } 
    } 

    @Override 
    public void onAnimationStart(Animation animation) { 
     // Nothing 
    } 

    @Override 
    public void onAnimationRepeat(Animation animation) { 
     // Nothing 
    } 
} 

A jeśli to Nie jest to typ błędny i potrzebujesz innej animacji dla czwartego widoku tekstowego, możesz usunąć kontrolę liczenia i po prostu dodać detektor animacji do tej pojedynczej animacji.

Powiązane problemy