2011-12-20 30 views
9

Bu benim ilk uygulamam ve animasyon bittiğinde yeni etkinlik başlatmam gerekiyor. Ne yapmaya ihtiyacım var? Kodum:Animasyon sonunda etkinlik nasıl başlatılır

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

cevap

17

Etkinliğinizi başlatmak için kullanmak istediğiniz animasyona bir AnimasyonListener ayarlayı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); 
     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

Lütfen bana tam kod verin ... TextView logo4 = (TextView) findViewById (R.id.TextView4); Animation fade4 = AnimationUtils.loadAnimation (this, R.anim.fade_in2); logo4.startAnimation (fade4);} var: myAnimation çözümlenemiyor ve AnimationListener türüne çözümlenemiyor – user1108339

+0

Bunu kendi kendime denemeliydin. Her neyse, kod cevabımda yayınlandı. – Jordi

+0

thx. benim için zor: | – user1108339

4

Kodunuz benim gözün kanaması yapılan, bu yüzden o kadar ben geldiğince sabit:

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

Yani, kod aşağıdaki gibi olacaktır

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

Ve eğer yanlış bir tür değil ve 4. metin görünümü için aslında farklı bir animasyona ihtiyacınız var, bu sayımı kaldırabilirsiniz ve sadece animasyon dinleyicisini söz konusu animasyona ekleyebilirsiniz.

İlgili konular