2013-08-21 75 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