2012-05-07 28 views
0

私は非常にAndroid開発に新しいですし、ビットごとに把握しようとしています!Android - アニメーション終了時にアクティビティを終了しますか?

私はスプラッシュ画面を実装しようとしていて、次のアクティビティに切り替える前にアニメーションを実行したいと考えています。私は

public class SplashActivity extends Activity { 
    // THREAD TO PROCESS SPLASH SCREEN 
    private Thread splashThread; 
    // ANIMATION END FIELD 
    private boolean ANIMATION_END; 
    // CALLED WHEN ACTIVITY IS FIRST CREATED 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // SET THE SPLASH SCREEN XML LAYOUT 
     setContentView(R.layout.splash); 
     // GET THE SPLASH IMAGE 
     final ImageView logo = (ImageView) findViewById(R.id.splash_logo); 
     // LOAD START ANIMATION FOR SPLASH IMAGE 
     final Animation slideIn = AnimationUtils.loadAnimation(this, R.anim.slide_in_right); 
     // START ANIMATE SPLASH LOGO 
     logo.startAnimation(slideIn); 
     // END ANIMATION SPLASH LOGO 
     final Animation slideOut = AnimationUtils.loadAnimation(this, R.anim.slide_out_left); 
     // SET EVENT LISTENER FOR ANIMATION TO FINISH 
     slideOut.setAnimationListener(new Animation.AnimationListener(){ 
      @Override 
      public void onAnimationStart(Animation animation) { 
      }   
      @Override 
      public void onAnimationRepeat(Animation animation) { 
      }   
      @Override 
      public void onAnimationEnd(Animation animation) { 
        ANIMATION_END = true; 
      } 
     }); 
     // SET SPLASHSCREEN THREAD 
     splashThread = new Thread() { 
      @Override 
      public void run() { 
       try { 
        synchronized(this) { 
         // DURATION OF SPLASH SCREEN 
         wait(4000); 
        } 
       } catch (InterruptedException e) { 

       } 
       logo.startAnimation(slideOut); 
       // IF ANIMATION HAS ENDED 
       if (ANIMATION_END == true) { 
        finish(); 
        // SWITCH FROM SPLASH ACTIVITY TO MENU ACTIVITY 
        startActivity(new Intent(SplashActivity.this, MenuActivity.class)); 
       } 
      } 
     }; 
     // RUN THE SPLASH THREAD 
     splashThread.start();   
    } 
    // SPLASH SCREEN TOUCH EVENTS 
    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     // USER TOUCHES SPLASH SCREEN 
     if (event.getAction() == MotionEvent.ACTION_DOWN) { 
      synchronized(splashThread) { 
       // MAKE SPLASH SCREEN END 
       splashThread.notifyAll(); 
      } 
     } 
     return true; 
    }  
} 

は、おそらく私が知っている最良のコードではありませんが、私は、これは私が試したものです...行くここでは1時間または2時間のためにそれを把握しようとしているが、このサイトに出くわし、そうされています試してみる。ロゴのスライドが入った後、突然切り替わります。MenuActivity

ありがとうございました。

答えて

0

onCreate()自体と
onAnimationEnd()のアニメーションを別のスレッドでやってください。

finish(); startActivity(new Intent(SplashActivity.this, MenuActivity.class));

また、アクティビティのライフサイクルを学ぶために試してみて、どの方法がUIコールバックとどのませんを表しています。

0
private ImageView img; 
    private Thread t; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     img = (ImageView)findViewById(R.id.im1); 

     t = new Thread(){ 
      @Override 
      public void run() { 
       try { 
        synchronized(this){ 
         wait(2000); 
        } 
         // Here your code of animation 

       } 
       catch(InterruptedException ex){ 
        ex.printStackTrace(); 
       } 

       Intent i = new Intent(QuizActivity.this,main.class); 
       startActivity(i); 
      } 
     }; 
      t.start(); 
    } 
+0

クールでおねがいします –

関連する問題