如何在android中显示Splash Screen

时间:2017-07-09 14:46:17

标签: android android-layout

我想在Android应用中显示启动画面。但我想在启动画面后面执行MainActivity的onCreate()方法。因为我在这种方法上做了大量的工作。任何人都可以告诉我如何做到这一点。

5 个答案:

答案 0 :(得分:2)

基本上你想在后台做一些工作,而用户会看到一些闪屏,对吧?你需要的是Async Task或Loader类的东西。

第1步:显示启动画面。 步骤2:启动异步任务,并在Async Task的doInBackground方法中执行所有繁重的处理 步骤3:使用Async Task的onPostExecute方法更新UI。在此方法中,首先关闭计时器以启动屏幕。然后发送意图以使用Async任务的繁重处理结果的数据启动另一个屏幕。在UI线程上显示它。

仅显示启动画面非常简单。此代码创建一个3秒的启动画面,然后将Intent发送到另一个活动。

public class SplashScreenActivity extends AppCompatActivity {

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


        CountDownTimer cdt1 = new CountDownTimer(3000, 1000) {

            Boolean checkInternetConnection = false;

            @Override
            public void onTick(long l) {
            }

            @Override
            public void onFinish() {

          //Send Intent here
             Intent i = new Intent(getApplicationContext(), 
                         anotherActivity.class);
                startActivity(i);
            }
        }.start();

    }

PS-不要忘记使用此代码将活动作为清单文件中的启动器活动。

答案 1 :(得分:1)

你可以试试Splash Screen ...

public class SplashScreen extends Activity {

//Further Needed Declarations

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

        /**
         * Showing splashscreen while making network calls to download necessary
         * data before launching the app Will use AsyncTask to make http call
         */
        new PrefetchData().execute(); 
    }
}

答案 2 :(得分:1)

按照这篇文章在您的应用中实施启动画面。 Splash Screens the Right Way

答案 3 :(得分:1)

这与你想要的完全一样。

在drawable中创建文件

    

    <item
        android:drawable="@color/gray"/>

    <item>
        <bitmap
            android:gravity="center"
            android:src="@mipmap/ic_launcher"/>
    </item>

</layer-list>

Styles.xml

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
    </style>

    <style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="android:windowBackground">@drawable/background_splash</item>
    </style>

</resources>

的活动:

public class SplashActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
        finish();
    }
}

答案 4 :(得分:0)

您可以在onCreate方法中添加它

   new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    // going to next activity
                    Intent i=new Intent(SplashScreenActivity.this,MainActivity.class);
                    startActivity(i);
                    finish();
                }
            },time);

然后根据需要初始化以毫秒为单位的时间值...

private  static int time=5000; 

有关更多详细信息,请从此链接下载完整代码...

https://github.com/Mr-Perfectt/Splash-Screen