Android,如何在没有白屏的情况下制作启动画面又名启动画面?

时间:2015-10-20 16:11:26

标签: android material-design

与许多其他Android开发者一样,我不是大屏幕的粉丝,但仍然大多数客户都想要它们,因为iPhone有它们或其他一些“很好”的理由。

在Android指南中它说:

  

当然,您希望每个人都能快速学习绳索,发现很酷的功能,并充分利用您的应用。因此,您可能会在首次打开应用时向所有新用户展示一次性介绍性幻灯片,视频或启动画面。或者,当用户第一次与某些功能进行交互时,您可能会想到显示有用的文本气泡或对话框。

链接here中的第一段“不显示未经请求的帮助,但非常有限的情况除外”

现在,在材料设计指南中,他们建议开发人员使用"Launch Screen"

  

因为在显示空白画布的同时启动应用程序会增加其感知的加载时间,请考虑使用占位符UI或品牌启动屏幕。

我猜测Android网站尚未更新。无论如何,Hangouts的最后一个版本(5.0.104 ...)有一个非常好的快速启动屏幕。它在我的带有Marshmallow的Nexus 5上即时显示。所以我的问题是,有一种“官方”方式吗?

我一直在搜索示例但除了像这个示例here之类的解决方法之外找不到任何其他方法,它使用了我认为最常用的Splash Screen Activity方法。但是,在显示实际的启动画面之前,应用程序已被销毁时,会显示白屏。

second example使用带有窗口背景的主题,该主题会立即显示,但几乎同样快速消失。

那么,Google如何像Google Hangouts一样制作启动屏幕,该屏幕会立即显示,而且之前没有任何白屏?

2 个答案:

答案 0 :(得分:12)

我工作的一位同事一直在伦敦的Google总部进行材料设计培训,他们的官方方式是使用您在自己的问题上发布的主题windowBackground:{{3} }

这个想法是框架可以非常快速地显示XML主题,并且只要加载了实际的布局,它就会显示出来。

环聊甚至谷歌地图之间的区别在于,它们的布局是一个非常繁重/复杂的布局,加载时间比HelloWorld应用程序要长。

随着您的应用变得越来越复杂,并且在Application.onCreateActivity.onCreate期间初始化了更多元素,您的斜杠屏幕也会在较长时间内显示。

修改

我已经从官方" Android开发者"中找到了一条Google+信息。来自谷歌工程师伊恩湖的简介和转发说同样的事情:

http://antonioleiva.com/branded-launch-screen/ https://plus.google.com/+AndroidDevelopers/posts/Z1Wwainpjhd

答案 1 :(得分:0)

这是因为第一个解决方案(http://antonioleiva.com/branded-launch-screen/)正在改变onCreate中的主题。 但您的活动的小部件尚未在onCreate 中呈现。这就是你看到白色屏幕的原因。第二个例子很好。如果您需要更长时间将 SPLASH_TIME 设置为更长时间。检查doInBackground函数中的 Thread.sleep(SPLASH_TIME)行。你可以等一下。