2012-05-18 211 views
0
public class tryAnimActivity extends Activity 
{ 

    /** 
    * The thread to process splash screen events 
    */ 
    private Thread mSplashThread;  

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // Splash screen view 
    setContentView(R.layout.janman); 

    final tryAnimActivity sPlashScreen = this; 

    // The thread to wait for splash screen events 
    mSplashThread = new Thread(){ 
     @Override 
     public void run(){ 
      try { 
       synchronized(this){ 
        // Wait given period of time or exit on touch 
        wait(5000); 
       } 
      } 
      catch(InterruptedException ex){      
      } 

      finish(); 

      // Run next activity 
      Intent intent = new Intent(); 
      intent.setClass(sPlashScreen, TabsActivity.class); 
      startActivity(intent); 
      stop();      
     } 
    }; 

    mSplashThread.start();   
    } 

    /** 
    * Processes splash screen touch events 
    */ 
    @Override 
    public boolean onTouchEvent(MotionEvent evt) 
    { 
    if(evt.getAction() == MotionEvent.ACTION_DOWN) 
    { 
     synchronized(mSplashThread){ 
      mSplashThread.notifyAll(); 
     } 
    } 
    return true; 
    }  
} 

什麼與此代碼的問題?點擊時,它崩潰。此外,接下來的活動沒有這個活動結束後開始。這是用於顯示啓動畫面的活動。閃屏不能正常工作

+0

後顯示crashtraptrace –

回答

1

我更喜歡使用線程的Runnable的元素。我下面的活動飛濺代碼效果很好。我希望它可以幫助你:

public class SplashScreenActivity extends Activity implements OnTouchListener { 

    private int SPLASH_DISPLAY_LENGTH = 3000; 

    private Handler splashHandler; 
    private Runnable splashRunnable; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.splash); 

     findViewById(R.id.splash_img).setOnTouchListener(this); 

     splashHandler = new Handler(); 
     splashRunnable = new Runnable() 
     { 
      @Override 
      public void run() 
      { 
       SplashScreenActivity.this.finish(); 
       Intent mainIntent = new Intent(SplashScreenActivity.this, HomeActivity.class); 
       startActivity(mainIntent); 
      } 
     }; 

     splashHandler.postDelayed(splashRunnable, SPLASH_DISPLAY_LENGTH); 

    } 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     if (event.getAction() == MotionEvent.ACTION_DOWN){ 
      splashHandler.removeCallbacks(splashRunnable); 
      SplashScreenActivity.this.finish(); 
      Intent mainIntent = new Intent(SplashScreenActivity.this, HomeActivity.class); 
      startActivity(mainIntent); 
     } 
     return true; 
    } 
} 
1

只是刪除stop()方法,將工作