最近项目写到了APP打开的启动页和广告页面,特此记录,以待备用。
这张图片是网上找的,流程很清晰,出处在下面的参考资料1中,有需要的可以去看一下。
一、启动页面
众所周知,APP在启动的时候,会有一小段时间(白屏、黑屏),系统会预读APP的主题,所以有的黑屏,有的白屏。
设置启动页目的:提升用户体验。
知识点:
- 冷启动:是指进程从无到有的过程。因为要进行页面初始化,所以相对其他两个启动方式,消耗的时间是相对比较多的。
- 热启动:是指之前的进程还在,在之前进程的基础上创建 Activity 的过程。这里耗时相对少一点。
解决方案:
方案1、(使用Splash页面)
建立 Splash 页面(好多人这样叫),并通过设置theme,使用背景颜色或者图片代替空白页面。
- 建立一个 空白 Activity 页面,取名 SplashActivity,并在 AndroidManifest 中设置为启动的页面
SplashActivity页面的代码:
- 在res/values/styles 文件中,新建一个theme ,如下图所示:
注意: 其中的 windowBackground 设置,可以设置为 *.xml 文件 也可以直接设置为 图片。
设置图片,图片固定,设置xml文件可以实现复杂效果(没用过)。
- 使用xml 文件
在res/drawable下新建一个layer-list,比如bg_splash.xml。
之所用layer-list是因为这个可以进行图片叠加。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<!-- 图片 -->
<bitmap
android:gravity="center"
android:src="@drawable/wel_page" />
</item>
</layer-list>
使用图片,放到 drawable文件夹下面(适配这个可要考虑了),而且如果使用了图片,内存中不会释放,所以在代码中要通过流读取文件设置(查看资料这样说的,目前不考虑这块)
将theme 设置为 SplashActivity中。
方案2、
在网上找的另外一种方案:
- 设置 theme中的 windowbackground 为透明
- 设置android:windowIsTranslucent属性,表明该窗口是半透明的
- 设置android:windowDisablePreview属性,禁用窗口的预览动画, 在MainActivity显示之前,系统永远不会使用窗口的主题来显示它的预览。
以上的3个都可以保证不会出现白屏或者黑屏,但是在主程序中,启动的时候不能做复杂的操作,否则会导致
在手机中点击了应用程序的图标,但过一、两秒才会打开应用程序不好的卡顿体验效果。
部分代码设置:
<style name="AppTheme.NoActionBar.Splash">
<item name="android:windowIsTranslucent">@bool/windowIsTranslucent</item>
<item name="android:windowBackground">@color/transparent</item>
</style>
二、广告页面(有的叫闪屏页面)
目前市面基本大部分APP 都有这块功能,打开APP,等待3s就会自动跳转到主页面,或者手动点击跳过广告按钮。其中的广告内容会动图变更。
目的:
- 跟风,大部分软件都这么做
- 放广告,做活动推广
- 后台开始加载数据了,闪屏过后数据直接呈现出来(其实我认为这点才是最重要的)
思路:打开APP的时候,联网请求广告图片,加载并保存本地。下次打开APP首先加载本地图片,然后请求网络看是否有新的图片。