启动APP时,一般都会是一张含有LOGO的图片,这张图片叫做启动图片,显示启动图片的页面称为启动页面,启动页面是为了增强应用程序启动时的用户体验。
制作启动图片
启动图片的尺寸,建议设置为1080*1882或更高尺寸。下图是APP的启动图片,可以将该图片保存到项目的res目录下的drawable目录,图片文件名称为splash.png。

创建启动页面SplashActivity
在创建启动页面Activity之前,先创建一个包(package),便于管理Activity页面。
创建package
(1)在项目列表内,选择java目录下的com.ebook.reader.ebookreader包。

(2)右键弹出菜单,在弹出的菜单中选择命令:New->Package。

(3)在弹出的New Package窗口中,输入Package的名称ui。单击【OK】即可创建ui包。

创建SplashActivity
(1)在项目列表内,选择java目录下的ui包。

(2)右键弹出菜单,在弹出的菜单中选择命令:New->Java Class。

(3)在弹出的Create New Class窗口中,输入Activity的名称SplashActivity,Superclass输入域是设置SplashActivity的父类,父类选择Activity类。单击【OK】即可创建SplashActivity。

创建SplashActivity的布局文件
布局文件是Activity的界面配置文件,可以布局Activity的用户界面。
(1)在项目列表内,选择res目录下的layout目录。

(2)右键弹出菜单,在弹出的菜单中选择命令:New->XML->Layout XML File。

(3)在弹出的New Android Component窗口中,输入Layout的名称activity_splash。单击【Finish】即可创建SplashActivity的布局文件activity_splash.xml。

activity_splash.xml的代码如下:
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" /> </android.support.design.widget.AppBarLayout> <include layout="@layout/content_main" /> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margin" app:srcCompat="@android:drawable/ic_dialog_email" /> </android.support.design.widget.CoordinatorLayout>
编辑SplashActivity文件
修改SplashActivity.java文件,修改后的代码如下:
activity_splash.xml的代码如下:
package com.ebook.reader.ebookreader.ui;
import android.app.Activity;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import com.ebook.reader.ebookreader.MainActivity;
import com.ebook.reader.ebookreader.R;
public class SplashActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
//隐藏状态栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
//隐藏标题栏
hideStatusBar();
setContentView(R.layout.activity_splash);
Thread myThread=new Thread(){//创建子线程
@Override
public void run() {
try{
//使程序休眠2秒
sleep(2000);
//启动MainActivity
Intent it=new Intent(getApplicationContext(),MainActivity.class);
startActivity(it);
//关闭当前活动
finish();
}catch (Exception e){
e.printStackTrace();
}
}
};
myThread.start();//启动线程
}
//只透明状态栏
private void hideStatusBar() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
// window.setStatusBarColor(Color.TRANSPARENT);
return;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
}
}编辑配置文件AndroidManifest
修改AndroidManifest配置文件中,修改的后代码如下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ebook.reader.ebookreader"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".ui.SplashActivity" android:label="@string/app_name" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MainActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar" android:label="@string/app_name"> </activity> </application> </manifest>
运行APP
所有代码编写完成后,就可以运行APP,查询运行效果了。如果启动图片的分辨率低于手机的分辨率。启动图片会在手机屏幕居中显示,启动图片显示一段时间后,会自动切换到MainActivity。
