我如何制作启动画面?

我想让我的应用程序看起来更专业,所以我决定要做一个启动画面。

我将如何创建它然后实现它?


进一步阅读:

  • 应用程序启动时间和主题启动屏幕(Android Performance Patterns Season 6 Ep。4)
  • Android中的闪屏:正确的方式
  • 老答案:

    如何 :简单的启动画面

    本答案向您展示了如何在应用程序启动时为例如品牌推广的原因显示启动屏幕一段固定的时间。 例如,您可能选择显示启动画面3秒钟。 但是,如果你想显示spash屏幕的时间可变(例如app启动时间),你应该查看Abdullah的回答https://stackoverflow.com/a/15832037/401025。 不过请注意,在新设备上应用启动可能会非常快,因此用户只会看到一个不好的用户体验。

    首先,您需要在layout.xml文件中定义spash屏幕

      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical" android:layout_width="fill_parent"
              android:layout_height="fill_parent">
    
              <ImageView android:id="@+id/splashscreen" android:layout_width="wrap_content"
                      android:layout_height="fill_parent"
                      android:src="@drawable/splash"
                      android:layout_gravity="center"/>
    
              <TextView android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:text="Hello World, splash"/>
    
      </LinearLayout>
    

    而你的活动:

    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.os.Handler;
    
    public class Splash extends Activity {
    
        /** Duration of wait **/
        private final int SPLASH_DISPLAY_LENGTH = 1000;
    
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle icicle) {
            super.onCreate(icicle);
            setContentView(R.layout.splashscreen);
    
            /* New Handler to start the Menu-Activity 
             * and close this Splash-Screen after some seconds.*/
            new Handler().postDelayed(new Runnable(){
                @Override
                public void run() {
                    /* Create an Intent that will start the Menu-Activity. */
                    Intent mainIntent = new Intent(Splash.this,Menu.class);
                    Splash.this.startActivity(mainIntent);
                    Splash.this.finish();
                }
            }, SPLASH_DISPLAY_LENGTH);
        }
    }
    

    就这样 ;)


    请注意,此解决方案不会让用户多等待:启动画面的延迟取决于应用程序的启动时间。

    当你打开任何Android应用程序时,你将默认得到一个黑色的屏幕,顶部有应用程序的标题和图标,你可以通过使用风格/主题来改变它。

    首先,在values文件夹中创建一个style.xml并为其添加样式。

    <style name="splashScreenTheme" parent="@android:style/Theme.DeviceDefault.Light.NoActionBar">
        <item name="android:windowBackground">@drawable/splash_screen</item>
    </style>
    

    您可以使用任何其他主题作为父项,而不是使用@android:style/Theme.DeviceDefault.Light.NoActionBar

    其次,在您的应用程序Manifest.xml中添加android:theme="@style/splashScreenTheme"到您的主要活动中。

    <activity
            android:name="MainActivity"
            android:label="@string/app_name"
            android:theme="@style/splashScreenTheme" >
    

    第三,在你的onCreate()启动活动中更新你的主题。

    protected void onCreate(Bundle savedInstanceState) {
        // Make sure this is before calling super.onCreate
        setTheme(R.style.mainAppTheme);
        super.onCreate(savedInstanceState);
    }
    

    更新看看这篇文章https://plus.google.com/+AndroidDevelopers/posts/Z1Wwainpjhd感谢@ mat1h和@adelriosantiago


  • 创建一个活动:飞溅
  • 创建一个布局XML文件:splash.xml
  • 将UI组件放在splash.xml布局中,以便看起来如何
  • 你的Splash.java可能看起来像这样:

    public class Splash extends Activity {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.splash);
    
            int secondsDelayed = 1;
            new Handler().postDelayed(new Runnable() {
                    public void run() {
                            startActivity(new Intent(Splash.this, ActivityB.class));
                            finish();
                    }
            }, secondsDelayed * 1000);
        }
    }
    
  • ActivityB.class更改为启动屏幕后要启动的任何活动

  • 检查你的清单文件,它应该看起来像

  •         <activity
                android:name=".HomeScreen"
                android:label="@string/app_name">     
            </activity>
    
            <activity
                android:name=".Splash"
                android:label="@string/title_activity_splash_screen">     
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    
    链接地址: http://www.djcxy.com/p/66789.html

    上一篇: How do I make a splash screen?

    下一篇: emulators will not run anymore on windows! Why?