Android启动页一般来说是全屏的,而且需要快速显示,那么就需要处理这两方面。
先来看全屏的设置,样式中的设置需要设置全屏的一些属性
<style name="FullScreenTheme" parent="BaseTheme">
<item name="android:windowFullscreen">true</item>
<item name="android:windowNoTitle">true</item>
<item name="windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="windowActionBar">false</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsTranslucent">false</item>
<!-- api 19添加,使导航栏透明-->
<item name="android:windowTranslucentNavigation">true</item>
</style>
主要是windowFullscreen,windowNoTitle这两个属性,但是只设置样式还不够,还需要在代码中设置全屏,主要代码如下
mUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
View.SYSTEM_UI_FLAG_FULLSCREEN;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
mUiVisibility = mUiVisibility | View.SYSTEM_UI_FLAG_IMMERSIVE;
}
getWindow().getDecorView().setSystemUiVisibility(mUiVisibility);
然后来看启动页的背景设置,Android启动有冷启动(进程不存在),热启动之分(进程已创建),当热启动时不会重建Application,界面显示比较快;冷启动就比较慢,需要初始化Application,默认显示的是启动页背景,Application初始化完成才会初始化启动页。一般有两种方式,一是设置启动页背景透明,冷启动时不会显示一个白屏的背景,启动页初始化后显示启动页的页面,但是如果初始化比较慢的话会好些启动无效一样。二是设置启动页的背景为自定义图片,这样一开始启动时就显示背景,好像启动很快。但是因为每种机型分辨率不同,如果是设置背景为图片可能为变形,所以需要自定义这个背景。常用的方法是自定义一个xml,使用layer-list的层级方式显示整个背景,除了背景图,其他图片不会变形,bg_splash.xml代码如下
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<solid android:color="@color/white" />
</shape>
</item>
<item
android:gravity="top|center_horizontal"
android:top="300dp">
<bitmap
android:dither="true"
android:filter="true"
android:gravity="top|center_horizontal"
android:src="@drawable/splash_center" />
</item>
<item
android:bottom="60dp"
android:gravity="bottom|center_horizontal">
<bitmap
android:dither="true"
android:filter="true"
android:gravity="bottom|center_horizontal"
android:src="@drawable/splash_logo" />
</item>
</layer-list>
其中splash_center,splash_logo分别是两张启动页中的切图,如果是1080p的设计稿切图放到drawable-xxhdpi中。
这样启动页大致完成了,不会变形,只是平板可能显示比较小。参考代码链接https://github.com/jklwan/NoteApplication/blob/master/app/src/main/java/com/chends/note/SplashActivity.java