Android启动页黑屏的解决方案

一般APP启动都会显示一个白屏或者黑屏的页面,再跳到欢迎页,这样子的体验效果不好。这到底是怎么回事呢?要如何解决它呢?今天我们来分析下它产生的原因,以及解决方案。

1、产生原因

当系统启动一个APP时,zygote进程首先会创建一个进程去执行这个APP,但是创建进程是需要时间的,用户点击后以为没响应会再次点击,这样的体验效果不佳。为了解决这种迷之尴尬,Android系统会根据你的manifest中设置的主体颜色来显示一个白屏或者黑屏,它的正式称呼是Preview window,即预览窗口。

2、解决方案

这个问题的本质是,虽然代码还没执行,但是配置文件被提前读取了,所以我们主要针对mainfest来解决这个问题,更准确的说,是主题配置文件

(1)修改启动的Activity的主题

具体方法如下: style.xlm

<style name="APPTheme" parent="@android:style/Theme.Holo.NoActionBar">
    <item name="android:windowBackground">@drawable/splash_icon</item>
</style>

@drawable/splash_icon
--> { }

同样将主题设置到启动的Activity的主题中,windowBackground就是即将展示的preview window。其中splash_icon可以是一整张图片,网上很多小伙伴也都是这么做的。

其实它也可以是一个能解析出图片资源的XML文件,好像只有layer-list这种能做得到,因为它能够将多个drawable叠加起来展示。

这样子就可以解决黑白屏的问题了。

(2)进一步优化:添加动画

一般我们的APP启动后都会有欢迎页,然后再进入主页。按照上面的做法,会先显示图片,接着显示欢迎页,然后到主页,由图片到欢迎页的跳转过渡很突兀,强迫症分分钟不能忍呀~

所以我们进行进一步的优化:添加动画。

实际上Preview window只能是静态图,展示不了动画。我们的做法是在跳到欢迎页中实现动画,就是在Preview widow跳转到欢迎页时,先显示一个跟Preview window页面一模一样的页面,让人觉得好像没有切换似的,然后再慢慢切换到欢迎页。

这里有个小问题要注意下:我们给Preview window设置的背景图如果不作处理,是会一直存在在内存中的,所以在进入欢迎页的onCreate中将背景图还原:

getWindow().setBackgroundDrawableResource(android.R.color.white);

到此启动页黑白屏的问题可以交货咯~

时间: 2024-10-24 16:22:01

Android启动页黑屏的解决方案的相关文章

Delphi XE5 for Android 启动无黑屏等待总结

Delphi XE5 for Android 启动无黑屏等待总结  从embarcadero官方技术论坛找了下参考资料,对黑屏处理应该来说有了相应的办法,并且这种办法具有很好的应用价值,因此做了个总结,Delphi XE5 无黑屏从本质上讲是使用Android 原生开发语言java ,编写的程序启动时首先加载java编写的SplashScreen的activity,然后在splashScreenActivity中启动delphi FireMonkey中的com.embarcadero.firem

Android 启动问题——黑屏 死机 解决方法

今天用了下Android Studio,出现了一些问题,现在将启动过程中遇到的问题和解决方案列出来,方便大家参考. 安装过程不多说,网上一搜一大把. 那直接说问题吧: 1. 无法启动,报错:Failed to allocate memory: 8This application has requested the Runtime to terminate it in an unusual way.Please contact the application's support team for

Android 避免APP启动闪黑屏的解决办法(Theme和Style)

闪黑屏的原因主要是我们启动Activity的时候,需要跑完onCreate和onResume才会显示界面 闪黑屏的原因主要是我们启动Activity的时候,需要跑完onCreate和onResume才会显示界面.也就是说需要处理一些数据后,才会显示.按照这种思路,是不是我把初始化的工作尽量减少就可以避免黑屏?事实是,就算你onCreate啥都不做,仍然会闪一下黑屏,因为初始化解析界面时需要一定时间.下面是解决办法: 1.自定义Theme 复制代码代码如下: 设置背景图Theme<style na

设置Images.xcassets后启动仍旧黑屏的问题

换了XCode6之后,发现以前写Icon-76.png这样很麻烦,就使用了Image.xcassets,公司所有测试机跑了一下,发现没什么问题.唯独有一台设置有问题,iphone5 ios6.0系统,游戏启动后黑屏.而且断点发现游戏获取的屏幕大小变为320x480了,实际应该是640x1136.因为之前打包是可以的,可以我只好把之前的资源打包的时候再添加进去,但总觉得很麻烦.因为不同的越狱不同它可能要求你使用的Launch Image是不一样的,替换来替换去的很繁琐   之前只加了4张Launc

Android 跨进程启动Activity黑屏(白屏)的三种解决方案

原文链接:http://www.cnblogs.com/feidu/p/8057012.html 当Android跨进程启动Activity时,过程界面很黑屏(白屏)短暂时间(几百毫秒?).当然从桌面Lunacher启动一个App时也会出现相同情况,那是因为App冷启动也属于跨进程启动Activity.为什么没会出现这种情况呢?真正元凶就是Android创建进程需要准备很多资源,它是一个耗时的操作. 黑屏(白屏)原因 当A进程启动B进程中的一个Activity时,Android系统会先有zygo

【Android】去除应用启动时黑屏现象

http://www.eoeandroid.com/blog-1169143-47979.html 在AndroidManifest里面定义的时候,在启动的Activity,添加android:theme="@android:style/Theme.Translucent",就不会出现黑屏现象了

Android自动问题——黑屏、死机等姐姐方法

今天用了下Android Studio,出现了一些问题,现在将启动过程中遇到的问题和解决方案列出来,方便大家参考. 安装过程不多说,网上一搜一大把. 那直接说问题吧: 1. 无法启动,报错:Failed to allocate memory: 8This application has requested the Runtime to terminate it in an unusual way.Please contact the application's support team for

Cocos2dx Android 启动页的设置

cocos2dx android上的启动页的设置实际都差不多,在网上看了一些资料,很多人都是重新弄了一个Activity作为启动页,这样子是没问题,但是在cocos2dx android上中间会有一个很长得黑屏时间,这主要是在加载一些资源:启动页的还有一种做法是直接在主页面上写,实现请参考 Android应用启动界面的实现方法 这篇博客个人感觉还是写的不错的,好了现在实现cocos2dx android上的启动页方法实现如下: 我采用的cocos2dx 3.2的版本. 在AppActivity里

百度地图 Fragment之间切换黑屏现象解决方案

用过百度地图的人多很忧伤,各种bug, 已无力吐槽,最无语的可能就是会出现黑屏现象,比如一个Activity包含三个Fragment, 其中一个Fragment嵌套MapView使用,在切换这三个Fragment时会出现明显的黑屏,这个问题出现很久了,很早的SDK版本就存在,现在最新的SDK版本依然存在这个问题,解决方案如下: 1,在使用MapView的Fragment的onResume/onPause方法中手动调用设置view是否可见,具体如下: @Override protected voi