2011-12-20 18 views
9

Esta es mi primera aplicación y necesito comenzar una nueva actividad cuando finaliza la animación. ¿que necesito hacer? Mi código:Cómo iniciar la actividad en el extremo de la animación

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); 
; 
     } 
    } 

Respuesta

17

Establezca un AnimationListener a la animación que desea utilizar para iniciar su actividad.

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); 
    } 
} 

lo tanto, su código será la siguiente:

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

por favor, denme el código completo ... cuando lo pase después de TextView logo4 = (TextView) findViewById (R.id.TextView4); Animación fade4 = AnimationUtils.loadAnimation (this, R.anim.fade_in2); logo4.startAnimation (fade4);} tengo: myAnimation no se puede resolver y AnimationListener no se puede resolver con un tipo – user1108339

+0

Deberías haberlo intentado tú mismo en mi opinión. De todos modos, el código se publica en mi respuesta. – Jordi

+0

thx. es difícil para mí: | – user1108339

4

Su código hizo sangrar de mi ojo, por lo que fija tanto como pude:

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 
    } 
} 

Y si se trata de no es un tipo erróneo y realmente necesita una animación diferente para la cuarta vista de texto, puede eliminar la verificación de conteo y simplemente agregar el oyente de animación a esa animación individual.

Cuestiones relacionadas