2013-08-21 74 views
1

我想編寫一個使用啓動畫面的代碼。我寫了這個到目前爲止,但誰能告訴我什麼是在這裏失蹤!?開始啓動畫面活動

這裏是我的主要代碼:

package com.example.splash; 

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.util.Log; 
import android.view.Menu; 

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


    } 



} 

這裏是我潑活動代碼:

package com.example.splash; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 

public class splashscreen extends Activity { 

protected int _splashTime = 5000; 

    private Thread splashTread; 

    @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      // TODO Auto-generated method stub 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.splashh); 
      final splashscreen sPlashScreen = this; 

       splashTread = new Thread() { 
        @Override 
        public void run() { 
         try {     
          synchronized(this){ 
           wait(_splashTime); 
          } 

         } catch(InterruptedException e) {} 
         finally { 
          finish(); 

          Intent i = new Intent(); 
          i.setClass(sPlashScreen,MainActivity.class); 
          startActivity(i); 

          //stop(); 
         } 
        } 
       }; 


       splashTread.start(); 

    } 

的問題是我不知道如何告訴我主要去色斑的活性,如果我用一個意圖,我會卡在無限循環。

+0

[請參閱此處](http://stackoverflow.com/a/5486970/2345913) – CRUSADER

+0

這是您的第一項活動? – Jaguar

+0

class MainActivity – Tolen

回答

1

試試這個:

public class splashscreen extends Activity { 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      requestWindowFeature(Window.FEATURE_NO_TITLE); 
      setContentView(R.layout.activity_splash); 
      Thread t = new Thread(Splash_Runnable); 
      t.start(); 

     } 





     Runnable Splash_Runnable = new Runnable() { 

      @Override 
      public void run() { 
       try { 
        Thread.sleep(3000); 

         startActivity(new Intent(splashscreen.this, 
           MainActivity.class)); 
         splashscreen.this.finish(); 

       } catch (InterruptedException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

      } 
     }; 

    } 
1

的問題(我猜)是你的應用程序開始與MainActivity爲你的發射活動。在您的應用程序清單XML中製作splashscreen您的laucher活動,您將避免無限循環。

1

試試這個代碼:

private boolean _active = true; 
private int _splashTime = 5000; 

Thread splashTread = new Thread() 
     { 
      @Override 
      public void run() 
      { 
       try 
       { 
        int waited = 0; 
        while(_active && (waited < _splashTime)) 
        { 
         sleep(100); 
         if(_active) 
         { 
          waited += 100; 
         } 
        } 
       } 
       catch(InterruptedException e) 
       { 
        e.printStackTrace(); 
       } 
       finally 
       { 
         Intent intent = new Intent(SplashScreenActivity.this,MainActivity.class); 
         startActivity(intent); 
        finish(); 
      } 
     }; 
     splashTread.start(); 

AndroidManifest提爲主要活動的活動。

1

嘗試從這裏更改您的SplashActivity代碼。

Splash and main activity error

也會使你的splashactivtiy爲你的發射活動,然後重定向到在MainActivity從閃屏

<activity 
      android:name="com.app.wablogic.SplashActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
      </intent-filter> 
     </activity> 
3

你可以簡單地使用:

Handler handler=new Handler(); 
     handler.postDelayed(new Runnable() 
     {    
      @Override 
      public void run() 
      { 
       Intent intent = new Intent(SplashViewController.this,HomeViewController.class); 
       startActivity(intent); 
       SplashViewController.this.finish();       
      } 
     }, 3000); 
0

試試這個。

public class Splash extends Activity { 
    protected boolean _active = true; 
    protected int _splashTime = 10; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.splashsrc); 
       // splash screen for 10 seconds 
       Thread splashTread = new Thread() { 
        @Override 
        public void run() { 
         try { 
          int waited = 0; 
          while (_active && (waited < _splashTime)) { 
           sleep(1000); 
           if (_active) { 
            waited += 100; 
           } 
          } 
         } catch (UnsupportedOperationException ex) { 

          stop(); 
         } catch (InterruptedException ex) { 

         } finally { 
          startActivity(new Intent(Splash.this, 
            MainActivity.class)); 
          finish(); 
         } 
        } 
       }; 
       splashTread.start(); 
      } 
     } 

在清單中實現這一點。創建飛濺活動

<activity 
android:name="com.activities.Splash" 
android:label="@string/app_name" > 
<intent-filter> 
<action android:name="android.intent.action.MAIN" /> 
<category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 
</activity> 
0

完整詳細的飛濺

splash.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:background="@drawable/splash" > 


</LinearLayout> 

現在,創建一個類包下創建一個佈局。將它命名爲飛濺

public class Splash extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.splash); 
    Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 

      Intent openMainActivity = new Intent(Splash.this, MainActivity.class); 
      startActivity(openMainActivity); 
      finish(); 

     } 
    }, 5000); //it will call the MainActivity after 5 seconds 
} 

轉到manifest並添加Activity它。

和削減intent-filter其中主發射是孩子,並將其粘貼飛濺活動像

<activity 
     android:name="com.example.yourpackage.Splash" 
     android:label="@string/app_name"> 

      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
0

您可以做的事情創建一個線程或只是睡了幾秒鐘的事,如

公共類MainActivity擴展活動{

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Thread background = new Thread() { 
     public void run() { 

      try { 
       // Thread will sleep for 3 seconds 
       sleep(3*1000); 

       // After 3 seconds redirect to another intent 
       Intent i=new Intent(getBaseContext(),MenuActivity.class); 
       startActivity(i); 

       //Remove activity 
       finish(); 

      } catch (Exception e) { 

      } 
     } 
    }; 

    background.start(); 

} 

@Override 
protected void onDestroy() { 

    super.onDestroy(); 

} 

你可以得到更多的示例here