我如何制作启动画面?
我想让我的应用程序看起来更专业,所以我决定要做一个启动画面。
我将如何创建它然后实现它?
进一步阅读:
老答案:
如何 :简单的启动画面
本答案向您展示了如何在应用程序启动时为例如品牌推广的原因显示启动屏幕一段固定的时间。 例如,您可能选择显示启动画面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
你的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