一起Talk Android吧(第三百一十一回:创建程序启动界面Splash Screen二)

一起Talk Android吧(第三百一十一回:创建程序启动界面Splash Screen二)

各位看官们,大家好,上一回中咱们说的是Android中创建程序启动界面的例子,这一回咱们继续说该例子。闲话休提,言归正转。让我们一起Talk Android吧!


看官们,上一章回中我们通过修改程序的主题来创建程序启动界面,本章回中我们再介绍一种创建程序启动界面的方法,具体步骤如下:

  • 1.创建一个EmptyActivity的工程,此工程中只有一个主界面:MainActivity;
  • 2.创建一个Fullscreen Activity,同时将其设置为Launcher Activity,具体操作为:在AndroidManifest.xml文件中把MainActivity和FullscreenActivity互换;

注意这里使用了AST中自带的Activity模板,具体操作如下:File ->New -> Activity -> Fullscreen Activity,此操作是在AST 4.0版本上进行的,版本不同操作细节上可能会有差别。

  • 3.在Fullscreen Activity的代码中启动一个线程,让该线程暂停1s,然后跳转到程序主界面中,上一章回的例子中介绍过,这里不再列出代码。


保存代码并且运行程序就可以看到一个覆盖整个屏幕并且没有ActionBar的界面,我们在这里就不演示程序运行结果了,大家可以自己动手实践。


我们在上一章回中通过配置主题去掉了Activity上的ActionBar,在这里使用的是AST提供的模板去掉了ActionBar,其中的原理是什么?是不是也是使用了主题?我们带着好奇心查看主题的代码后并没有在主题中发现去掉ActionBar的代码,那么只能是在代码中去掉的。我们跟着这个思路打开了FullscreenActivity的java代码,通过查找和分析,发现它使用了一个叫hide()的方法来去掉ActionBar的,该方法的核心代码如下:

        ActionBar actionBar = getSupportActionBar();
        if (actionBar != null) {
            actionBar.hide();
        }


代码中首先获取了ActionBar,然后通过ActionBar的hide()方法隐藏了ActionBar.因此可见AST的模板是通过Java代码去掉ActionBar的。


对比一下这两种方法就会发现,它们在创建程序启动界面时都去掉了ActionBar,那么这个ActionBar是如何添加到程序中的呢?其实早期的Activity中是没有ActionBar的,它是在AppCompatActivity中引入的,当我们创建工程时MainActivity默认继承AppCompatActivity,因此在界面上会显示ActionBar.如果我们让MainActivity继承Activity时,界面上就不会显示ActionBar。虽然这样也可以实现全面覆盖屏幕的效果,但是在实际项目中不建议这么操作,因为这会破坏程序的兼容性。

最后我们总结一下创建程序启动界面的整体思路:

  • 1.必要步骤是去掉Activity上的显示的ActionBar;方法有两种:配置主题或者通过Java代码隐藏;
  • 2.主要逻辑是让当前进程暂停一段时间然后再跳转到主程序界面上;


各位看官,关于Android中创建程序启动界面的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

上一篇:2018icpc南京/gym101981 A Adrien and Austin 博弈


下一篇:Qt-QSplashScreen:程序启动界面